내가 만든 앱에는 모임을 보고 참여, 탈퇴 등을 할 수 있는데
이러한 기능은 다음과 같은 뷰에서 제공한다.
1. 모든 모임 글을 보여주는 화면
2. 모임 글 상세 화면
3. 내가 만든 모임글
4. 내가 참여한 모임글
5. 참여한 모임에 대한 채팅방 리스트
6. 해당 모임의 채팅방
등등
모임글과 관련된 다양한 화면이 존재한다.
뷰마다 다른 ViewModel을 사용하는 뷰도 존재하여.
각 화면에서의 동작을 동기화 시켜주는 부분에서 어려움이 있었다.
(내가 Repository를 API처럼 사용하고 받은 데이터 관리(DB저장을 제외)는 ViewModel에서 직접 관리하는 방식을 사용해서 생긴 문제)
예를 들어, "특정 모임의 채팅방 내부(6)"에서 탈퇴를 하더라도
다른 ViewModel을 사용하고 있는 "내가 참여한 모임글(4)"에서는 해당 사실을 알지 못해
Refresh를 해주어야 업데이트가 되는 문제가 있다(대형 앱, B사도 동기화는 안되어있긴 함)
동기화를 위해서 내가 생각한 방식은 3가지 방식은 다음과 같다.
1. Repository에 필요 모임 글 데이터를 관리하여 하나의 저장소에서 데이터를 관리한다.(아마도 일반적)
2. Repository에 저장하는 것 말고, GatheringDataManager 객체를 따로 생성
(Gathering 이외의 Entity와의 상호작용이 필요할 경우 역할을 분리 관리할 수 있음, UseCase처럼?)
3. ViewModel간의 동기화를 위해 Bus를 만들어 각각의 ViewModel은 해당 Bus를 구독 후 데이터 동기화 실행
그냥 가장 관리가 편하고 일반적인 Repository에 데이터를 가지고 있고 이를 활용해 Sync하는 방식을 사용하기러 함.
덕분에 Repository가 비대해지긴 했지만... ViewModel이 비대해 지는 것보다는 나은것 같다..
'어플 개발일기' 카테고리의 다른 글
24.7.31. 네트워크 중복 호출과 Flow오류 수정 (0) | 2024.07.31 |
---|---|
24.7.29. AGP 8.5.1 업데이트와 환경설정(SDK, JVM 등) (0) | 2024.07.31 |
안드로이드 개발과 관련해서 알아가기(1) (0) | 2024.07.09 |
앱 개선사항(3. 소모임 나가기 로직 테스트) (0) | 2024.06.04 |
앱 개선사항(2. 채팅방 뷰 및 알림 등 기능 개선) (0) | 2024.05.31 |