포스트

Final (18)

신고기능

이전에는 textfield로 간단하게 했다면 이번에는 만들어둔 VC에 전달하게 한다.

VM만 만들어 둔다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class ReportViewModel {
    
    private let manageManager = ManageManager()
    
    var managePublisher = PassthroughSubject<Void, Error>()
    
    func addReportCount(uid: String, storeAddress: String, title: String, completion: @escaping () -> Void) {
        manageManager.getSpecificReview(uid: uid, storeAddress: storeAddress, title: title) { [weak self] querySnapshot, error in
            
            if let error = error {
                self?.managePublisher.send(completion: .failure(error))
            }
            
            if let documents = querySnapshot?.documents {
                for doc in documents {
                    let id = doc.documentID
                    let data = doc.data()
                    guard let reportCount = data[db_reportCount] as? Int else { return }
                    let count = [db_reportCount: reportCount + 1]
                    reviewCollection.document(id).setData(count, merge: true)
                    self?.managePublisher.send(())
                    completion()
                }
            }
        }
    }
    
}

애플계정 로그아웃 문제 관리

현재 로그아웃을 눌렀을때 로그아웃이 되어 메인페이지로 가는것이 아니라, 첫화면으로 돌아가는 이슈가 발생한다.

이제 로그아웃이 제대로 되었을때 넘기기로 결정

1
2
3
4
5
6
7
8
9
10
11
12
func signOut(completion: @escaping () -> Void) {
        signManager.signOutCurrentUser { [weak self] result in
            switch result {
            case .success:
                self?.logoutPublisher.send(.success(()))
                completion()
            case .failure(let error):
                self?.logoutPublisher.send(.failure(error))
                completion()
            }
        }
    }

기존에는 completion이 없었는데, completion Handler를 추가함으로써 로그아웃이 되었을때 처리하는것으로 변경하였다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.