YAPP-Github / 24th-App-Team-3-iOS

5 stars 0 forks source link

[Refactor] 로그인화면 Usecase Layer적용을 위한 기본 코드 구성 #55

Open dlrjswns opened 2 months ago

dlrjswns commented 2 months ago

Describe

Existing

private func loginWithGoogle() {
        guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
              let rootViewController = windowScene.windows.first?.rootViewController as? UINavigationController,
              let presentingViewController = rootViewController.topViewController as? LoginViewController else {
            return
        }
        GIDSignIn.sharedInstance.signIn(withPresenting: presentingViewController) { result, error in
            guard error == nil else {
                LogHelper.error("Google SocialLogin Failed: \(error!)")
                return
            }

        }
}

private func loginWithKakao() {
        let loginClosure: (OAuthToken?, Error?) -> Void = { oauthToken, error in
            guard error == nil else {
                // TODO: 건준 - 카카오톡 로그인 실패 Alert 띄우기
                LogHelper.error("Kakao SocialLogin Failed: \(error!)")
                return
            }

         }

        if UserApi.isKakaoTalkLoginAvailable() {
            // 카카오톡 로그인 api 호출 결과를 클로저로 전달
            UserApi.shared.loginWithKakaoTalk(completion: loginClosure)
        } else { // 웹으로 로그인 호출
            UserApi.shared.loginWithKakaoAccount(completion: loginClosure)
        }
}

private func loginWithApple() {
        guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
              let rootViewController = windowScene.windows.first?.rootViewController as? UINavigationController,
              let presentingViewController = rootViewController.topViewController as? LoginViewController else {
            return
        }

        let provider = ASAuthorizationAppleIDProvider()
        let request = provider.createRequest()
        request.requestedScopes = [.fullName, .email]

        let controller = ASAuthorizationController(authorizationRequests: [request])
        controller.delegate = presentingViewController
        controller.presentationContextProvider = presentingViewController
        controller.performRequests()
}

Benefits

Reference

ChoiysApple commented 2 months ago

@dlrjswns 건준님~ 이슈 생성하실때 오른쪽 탭에서 Project에 추가해주세요

dlrjswns commented 2 months ago

@dlrjswns 건준님~ 이슈 생성하실때 오른쪽 탭에서 Project에 추가해주세요

아 지금 바로 제가 생성했던 이슈들에 Project추가하겠습니다 !!