Skip to content

[REFACTOR] DailyEmotion 데이터 흐름을 StateFlow 기반 반응형 스트림으로 개선 #192

@wjdrjs00

Description

@wjdrjs00

내용

기존의 이벤트 기반(EmotionChangeEvent) 감정 데이터 갱신 방식은 데이터 정합성 유지가 어렵고 각 ViewModel에서 수동으로 데이터를 다시 불러와야 하는 구조적 한계가 있습니다. 이를 StateFlow 기반의 반응형 데이터 스트림으로 개선하여 데이터의 신뢰성을 높이고 아키텍처를 단순화합니다.

작업 상세 내용

  • EmotionRepositoryStateFlow 기반 dailyEmotionFlow 도입
  • DailyEmotion 도메인 모델에 fetchedDateisStale 속성 추가 (캐시 유효성 검사)
  • EmotionRepositoryImpl에서 onSubscription을 통한 자동 데이터 로드 구현
  • 중복 호출 방지: AtomicBoolean 또는 Mutex를 활용한 동시성 제어 로직 적용
  • 기존 EmotionChangeEvent 및 관련 유스케이스(FetchDailyEmotionUseCase 등) 제거
  • HomeViewModel, RecommendRoutineViewModel에서 ObserveDailyEmotionUseCase로 전환

기대 효과

  • 실시간 데이터 동기화: 감정 등록 시 구독 중인 모든 화면에 즉각적으로 데이터 반영
  • 네트워크 최적화: isStale 체크 및 중복 호출 방지 로직을 통한 불필요한 API 요청 감소
  • 유지보수성 향상: 이벤트 중심에서 데이터 스트림 중심으로 전환하여 데이터 흐름 추적 용이

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions