APP-iOS3rd / PJ3T2_Mymory

멋쟁이사자처럼 iOS 앱스쿨 3기 팀 프로젝트
11 stars 3 forks source link

Feat/community #214

Closed iAmSomething closed 9 months ago

iAmSomething commented 9 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

연관되는 issue 정보를 알려주세요

Issue Number: #204

PR 설명하기

 Community 기능을 구현했어요!

커뮤니티 탭에 보이는 이 주의 메모

조건 1. 이번 주 안에 작성된 메모

조건 2. like 횟수가 많은 메모 상위 N개

를 충족해야 합니다!

어떻게 작동하나요? code 기반으로 설명해주세요

// in MemoService.swift
func fetchMemosOfWeek() async throws -> [Memo] {
        var memos: [Memo] = []
        let week = Date().timeIntervalSince1970 - (3600 * 7)
        do {
            let docs = try await COLLECTION_MEMOS
                .whereField("createdAtTimeInterval", isGreaterThan: week)
                .getDocuments()
            let filteredDocs = docs.documents.sorted(by: {first, second in
                let firstCount = first["memoLikeCount"] as? Int ?? 0
                let secondCount = second["memoLikeCount"] as? Int ?? 0
                return firstCount > secondCount
            })
            for doc in filteredDocs {
                if doc.exists {
                    let data = doc.data()

                    // 문서의 ID를 가져와서 fetchMemoFromDocument 호출
                    if var memo = try await fetchMemoFromDocument(documentID: doc.documentID, data: data) {
                        let likeCount = await likeMemoCount(memo: memo)
                        let memoLike = await checkLikedMemo(memo)
                        memo.likeCount = likeCount
                        memo.didLike = memoLike
                        memos.append(memo)
                        //최대 상위 5개
                        if memos.count == 5 {
                            return memos
                        }
                    }
                }
            }
            return memos
        }
        catch {
            print(error.localizedDescription)
            return []
        }
    }

가능하다면 추가해주세요

변경 사항 스크린샷 혹은 화면 녹화

스크린샷 IMG_0644

Test 여부

Test 정보

//예시
let testDatas: [TestData] = [.init(...),...]

기타 언급해야 할 사항들