DAY 35 | 개인 프로젝트 — viewmodel & riverpod (3)

작업 일정

  • #33 [state] FeedNotifier & NotificationNotifier (스케치 피드 및 알림) 구현
  • #34 [state] FriendsNotifier 및 친구/검색 관리 구현

#33 [state] FeedNotifier & NotificationNotifier (스케치 피드 및 알림) 구현

분명 처음 설계할 땐 Use Case가 CompleteSessionUseCase 하나였는데 구현하다 보니 이건 Use Case로 빼는 게 낫겠다는 의사결정을 하게 되어 Use Case가 늘어난다. 설계 시점에서 놓친 부분이 꽤 있단 말이지.

게시물을 수정하거나 삭제, 댓글을 다는 등의 상태 변화를 주었을 때 새로고침하기 전까지 반영되지 않는 이슈가 있었는데, ref.invalidate(); 을 통해 해결했다. 변화를 반영해야 하는 녀석들의 ViewModel Provider들을 각각 전달하면 되더라.

댓글 작성/삭제 시 서버에 데이터를 보내는 한편 변동사항을 새로 받아오지 않고 로컬에서만 슬쩍 바꿔서 보여주는데, 그 과정에서도 이슈가 있었다. 나갔다 들어오면 제대로 뜨는데 댓글을 단 시점에는 답글이 원댓글 아래가 아니라 가장 밑에 달린다거나, 답글이 있는 댓글을 삭제했을 때 '삭제된 메시지입니다'라고 뜨는 게 아니라 그냥 완전히 사라져 버린다거나. 로컬에서도 댓글 작성/삭제 시점에 필터링을 한 번 해주는 걸로 처리했다. 그리고 삭제된 댓글에는 답글 버튼이나 메뉴 버튼이 뜨지 않게 하였다.

아직 친구 관련 기능이 구현되지 않은 상태라 알림 화면을 테스트할 수 없었는데, 이를 처리하기 위해 Gemini에게 샘플 notifications 문서를 작성해 달라고 하여 Firestore에 넣어놓고 테스트 해보았다.

#34 [state] FriendsNotifier 및 친구/검색 관리 구현

초반에는 Riverpod을 처음 다뤄보다 보니 AI한테 물어보고 따라치며 '이건 왜 이렇게 쓰는 거지?' 하는 의문이 들 때 물어보면서 작업하는 경우가 많았는데 이쯤 오니까 AI 없이도 작성할 수 있는 코드가 많아졌다. 아직은 조금씩 놓치는 부분도 있지만 차차 개선되겠지.

하다 보니 일관성이 결여된 부분도 발견되고 뒤늦게 덧붙이게 되는 것들도 있다. 미리 규칙을 정해놓지 않으면 그런 일이 발생하곤 한다. 회원가입에서 엔터를 쳐서 다음 입력칸으로 넘어간다거나 댓글을 작성하고 엔터를 치면 댓글이 입력된다거나 하는 기능도 뒤늦게 추가된 것 중 하나다. 검색 기능 넣다 보니 예제 코드에 그런 게 적용되어 있길래 전체적으로 따라해 보았다. TextField에서 textInputAction 와 onFieldSubmitted 를 활용할 수 있게 되었다!

>>> GitHub Repository at this point (10451f2)

profile
Peter J Online Space - since July 2020 | 아무데서나 채용해줬으면 좋겠다 (지금은 학생 때 하던 거 아무거나 공부하고 있고요, 취업시켜 주시면 그 분야로 공부할게요)

0개의 댓글