APP-iOS3rd / PJ3T2_Mymory

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

[리팩토링] AuthViewModel을 무분별하게 사용하는 부분을 수정했어요 #165

Closed iAmSomething closed 9 months ago

iAmSomething commented 9 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

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

Issue Number: N/A

PR 설명하기

현재 많은 부분에서 AuthViewModel을 가지고 user형상 관리를 작업하고 있는데, 이러면 메모리에 AuthViewModel이 늘상 떠있는 문제가 있습니다.

이렇게 되면, AuthViewModel이라는 클래스가 작업하는 내용이 불명확해집니다.

그래서 공용으로 많이 필요한 currentUser그리고 Usersession을 비롯해서, following 관련 로직들을 분리하였고, 해당 부분을 AuthService로 따로 뺐습니다.

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

final class AuthService: ObservableObject {
    static let shared = AuthService()
    @Published var userSession: FirebaseAuth.User?
    @Published var currentUser: User?
    @Published var isCurrentUserLoginState: Bool
    @Published var followerCount: Int = 0
    @Published var followingCount: Int = 0
    @Published var isFollow: Bool = false
    func signout() -> Bool
    func checkUser(userID: String) async -> Bool 
    func fetchUser()
    func fetchUser(completion: @escaping (User?) -> Void)
    func memoCreatorfetchUser(uid: String, completion: @escaping (User?) -> Void).
    func followAndFollowingCount(user: User) async -> Void
    func followCheck(followUser: User , completion: @escaping (Bool?) -> Void)
    func userFollow(followUser: User , completion: @escaping (Error?) -> Void)
    func userUnFollow(followUser: User , completion: @escaping (Error?) -> Void)
}

가능하다면 추가해주세요

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

스크린샷

Test 여부

Test 정보

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

기타 언급해야 할 사항들