-
Notifications
You must be signed in to change notification settings - Fork 0
[REFACTOR] 타이머와 힌트 화면에서 힌트, 구독 상태 데이터를 공유하는 방식을 변경한다. (AI Generate Test) (#123) #125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[REFACTOR] 타이머와 힌트 화면에서 힌트, 구독 상태 데이터를 공유하는 방식을 변경한다. (AI Generate Test) (#123) #125
Conversation
🤖 Generated with Gemini AI from Issue #123 Co-Authored-By: NextRoom Bot <bot@nextroom.app>
🤖 AI Code Review (Gemini)안녕하세요, NextRoom 프로젝트의 PR에 대한 코드 리뷰를 시작하겠습니다. 이번 PR은 하지만, 제공된 코드 변경 사항에 심각한 문법 오류와 오타가 많아 현재 상태로는 컴파일 및 실행이 불가능합니다. 이 부분을 최우선으로 수정해야 합니다. 🔴 Critical Issues (치명적인 문제)1. 전반적인 코드의 심각한 문법 오류 및 오타제공된 모든 파일에서
💡 제안: 2.
|
🚀 목적
TimerFragment와HintFragment간의 힌트 및 구독 상태 데이터 공유 방식을 개선합니다.📝 주요 변경 사항
GameSharedViewModel도입:game_navigation내에서 힌트 목록과 구독 상태를 공유하고 관리하기 위한GameSharedViewModel을 새로 생성했습니다.GameSharedState와GameSharedEvent를 통해 상태 및 사이드 이펙트를 관리합니다.GetHintListUseCase와GetSubscribeStatusUseCase를 통해 데이터를 로드합니다.TimerFragment수정:GameSharedViewModel을navGraphViewModels(R.id.game_navigation)로 주입받아 사용합니다.roomId를GameSharedViewModel.fetchGameData()에 전달하여 초기 데이터를 로드합니다.HintFragment로 이동 시 힌트 및 구독 상태 데이터를Argument로 전달하는 로직을 제거했습니다.GameSharedViewModel의 사이드 이펙트(예: 토스트 메시지)를 관찰하도록 했습니다.HintFragment수정:GameSharedViewModel을navGraphViewModels(R.id.game_navigation)로 주입받아 사용합니다.Argument에서 힌트 및 구독 상태를 가져오는 로직을 제거하고,GameSharedViewModel의 상태를 관찰하여 UI를 업데이트하도록 변경했습니다.HintViewModel에서HintUsed이벤트 발생 시GameSharedViewModel.updateHint()를 호출하여 공유 상태를 업데이트합니다.TimerViewModel및HintViewModel수정:힌트 목록,구독 상태) 관련Use Case주입 및 데이터 로딩 로직을 제거하고, 각 ViewModel의 고유한 UI 및 비즈니스 로직에 집중하도록 변경했습니다.HintViewModel에서 힌트 사용 성공 시HintEvent.HintUsed사이드 이펙트를 발행하여HintFragment가GameSharedViewModel을 업데이트하도록 위임합니다.💡 고려 사항
GameSharedViewModel은game_navigation스코프 내에서 생명주기를 가지므로, 해당 그래프 내의 모든 화면에서 동일한 인스턴스를 공유합니다.HintViewModel에서 공유 데이터를 변경해야 할 경우 사이드 이펙트를 통해Fragment를 거쳐GameSharedViewModel을 업데이트하는 방식을 사용합니다.🤖 자동 구현 정보
feature/NR-122-refactor-hint-subscribe-data-sharing변경된 파일
presentation/src/main/java/com/nextroom/nextroom/presentation/ui/game/GameSharedState.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/game/GameSharedEvent.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/game/GameSharedViewModel.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/timer/TimerFragment.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/timer/TimerViewModel.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/hint/HintViewModel.ktpresentation/src/main/java/com/nextroom/nextroom/presentation/ui/hint/HintEvent.ktCloses #123