APP-iOS3rd / PJ3T2_Mymory

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

[Refactoring/loginview]: Email 로그인 실패 시 그냥 dismiss되는 부분 수정 및 추가 작업 #142

Closed Seobe95 closed 9 months ago

Seobe95 commented 9 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

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

Issue Number: #134

PR 설명하기

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

func login(withEmail email: String, password: String) async -> String? {
    do {
        let result = try await Auth.auth().signIn(withEmail: email, password: password)
        self.userSession = result.user
        self.fetchUser()
        return nil
    } catch {
        let errorMessage = self.emailLoginErrorHandler(error: error as NSError)
        return errorMessage
    }
}
func emailLoginErrorHandler(error: NSError) -> String {
    print(error.code)
    switch error.code {
    case 17020 :
        return "네트워크 에러입니다. 네트워크 상태를 확인해주세요."
    case 17010 :
        return "비정상적인 요청입니다. 잠시 후 다시 시도해주세요."
    case 17008 :
        return "이메일 형식이 알맞지 않습니다."
    case 17009 :
        return "비밀번호가 일치하지 않습니다."
        // 기존의 17009번 에러가 비밀번호 불일치이지만, 현재 테스트 시 비밀번호 불일치 시 17004번 에러가 반환되므로 임시로 비밀번호 에러로 사용하겠습니다.
    case 17004 :
        return "비밀번호가 일치하지 않습니다."
    default:
        return "에러입니다. 잠시 후 다시 시도해주세요."
    }
}
Button {
    Task {
        if let alertTitle = await self.viewModel.login(withEmail: email, password: password) {
            self.loginErrorAlertTitle = alertTitle
            self.isShowingLoginErrorAlert = true
        } else {
            presentationMode.wrappedValue.dismiss()
        }
    }
} label: {
    Text("로그인")
        .font(.regular18)
}
.buttonStyle(LoginButton(backgroundColor: Color.indigo))
.alert(loginErrorAlertTitle, isPresented: $isShowingLoginErrorAlert) {
    Button("확인", role: .cancel) {}
}

가능하다면 추가해주세요

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

스크린샷

https://github.com/APP-iOS3rd/PJ3T2_Mymory/assets/79817557/54d3e702-1c4e-49bf-a9c3-4aa7a3b11b86

Test 여부

Test 정보

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

기타 언급해야 할 사항들