Email 로그인 시 에러(로그인 실패)가 발생할 경우 상황에 맞는 알러트창을 띄워줍니다.
LoginView를 NavigationStack으로 감싸 RegisterView로 이동할 수 있도록 수정했습니다.
MypageView에서 현재위치를 불러올 때 로딩화면이 나타나지 않도록 수정했습니다.
LoginView의 fullScreenCover 부분을 삭제하여 무한로딩에 빠지던 현상을 수정했습니다.
어떻게 작동하나요? code 기반으로 설명해주세요
기존의 login()함수는 Bool 타입을 반환하여 로그인의 성공 유무를 나타냈는데, 이를 String 타입을 반환하도록 수정하였습니다.
String 타입으로 수정한 이유는 emailLoginErrorHandler를 사용하여 로그인 에러 코드에 맞는 메시지를 반환하고, 이를 알러트 문구로 사용하기 위해서 입니다.
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 "에러입니다. 잠시 후 다시 시도해주세요."
}
}
PR 가이드라인
PR Checklist
PR 날릴 때 체크 리스트
PR Type
연관되는 issue 정보를 알려주세요
Issue Number: #134
PR 설명하기
어떻게 작동하나요? code 기반으로 설명해주세요
emailLoginErrorHandler
를 사용하여 로그인 에러 코드에 맞는 메시지를 반환하고, 이를 알러트 문구로 사용하기 위해서 입니다.가능하다면 추가해주세요
변경 사항 스크린샷 혹은 화면 녹화
스크린샷
https://github.com/APP-iOS3rd/PJ3T2_Mymory/assets/79817557/54d3e702-1c4e-49bf-a9c3-4aa7a3b11b86
Test 여부
Test 정보
기타 언급해야 할 사항들