Skip to content
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

[Feat]#76-anime 다운로드 방식 수정 (1차) #99

Merged
merged 6 commits into from
Nov 30, 2024

Conversation

HyunJaeyeon
Copy link
Member

👀 연관 이슈

#76 다운로드 방식 수정

🛏️ 요약

이번 PR에서 작업한 내용을 간략히 설명해주세요

  • 애니메이션 다운로드 방식을 수정했습니다.

🎁 작업 내용

1. 애니메 타이틀 먼저 불러옴 (fetchAnimeTitles)

  • firestoreService에 타이틀만 fetch해오는 함수를 만들었습니다.
  • 처음 앱 시작 시 파이어스토어에서 타이틀만 가져와서 swiftdata에 저장함
  • 처음 AnimeSelectView에선 애니 타이틀 리스트만 존재하게 됨
            // SwiftData에 이미 저장된 애니인지 확인
            if context.fetch(Anime.self).first(where: { $0.id == animeID }) == nil {
                // 새로운 Anime 객체 생성
                let newAnime = Anime(id: animeID, title: animeTitle, quotes: [])
                //SwiftData에 추가
                context.insert(newAnime)
               //...
            }

2. 선택 시 애니메의 디테일을 저장 (fetchAnimeDetailsAndStore)

  • 특정 아이디의 에니메 디테일을 swiftdata에 저장합니다.
        if let existingAnime = context.fetch(Anime.self).first(where: { $0.id == animeID }) {
            quotes.forEach { newQuote in
                if !existingAnime.quotes.contains(where: { $0.id == newQuote.id }) {
                    existingAnime.quotes.append(newQuote)
                }
            }
        }
  • 저장 후 리스트를 탭했을 때 selectAnnime함수를 실행시켜 디테일을 저장해줍니다요
private func selectAnime(_ anime: Anime) async {
        isLoading = true
        do {
            try await firestoreService.fetchAnimeDetailsAndStore(context: modelContext, animeID: anime.id) 

3. 쇼케이스용 변경사항

  • 항목을 누를 때마다 변경사항이 있는지 비교하는 로직은 아직도 존재하므로
  • 쇼케이스 때 애니를 바로바로 선택하고 다음플로우로 넘어가는 과정이 길어짐
  • 따라서, 일단 quotes를 다운받은 후는 비교 로직이 실행되지 않고, 바로 선택이 되게 변경해놨습니다.
  • 서버에서 업데이트가 돼도 반영 안됨 -> 추후 수정할 예정입니다.
        // quotes가 이미 저장되어 있으면 바로 선택
        if !anime.quotes.isEmpty {
            viewModel.selectAnime(anime)
            return
        }

📱 작업 스크린샷 (선택)

ScreenRecording_11-30-2024.11-05-36_1.mov

🎾 공유사항 (선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

- fetchAnimeTitles: 처음에 애니메 타이틀만 불러와서 저장
- fetchAnimeDetailsAndStore: 특정 애니메의 정보들만 불러와 저장
- 애니메를 선택했을 때 fetchAnimeDetailAndStore을 실행시킴
@HyunJaeyeon HyunJaeyeon added the Feature 새로운 기능 추가 label Nov 30, 2024
@HyunJaeyeon HyunJaeyeon self-assigned this Nov 30, 2024
@SSub-jun
Copy link
Collaborator

SSub-jun commented Nov 30, 2024

정상 작동 확인!!

image

피그마에 나와 있는 이렇게까진 아니어도,
다운로드 되기 전에는 죽은 버튼처럼 보여주기로 한 거 아니였나요잉?

아하! 지금 다시 보니께 다운 받은 후에는 fetch가 안 되게는 되어 있네요잉

그 체크 버튼도 업데이트 가능한가요??
하얀색 체크 -> 민트색 체크

@SSub-jun SSub-jun merged commit e460b87 into develop Nov 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants