[#259] 공급자 링크 시 서로 다른 이메일로 연결을 시도할 경우 에러가 아닌 같은 이메일로 해야 한다는 안내문을 보이도록 개선한다#263
[#259] 공급자 링크 시 서로 다른 이메일로 연결을 시도할 경우 에러가 아닌 같은 이메일로 해야 한다는 안내문을 보이도록 개선한다#263
Conversation
opficdev
commented
Mar 12, 2026
- closed 공급자 링크 시 서로 다른 이메일로 연결을 시도할 경우 에러가 아닌 같은 이메일로 해야 한다는 안내문을 보이도록 개선한다 #259
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 PR은 외부 인증 공급자 연결 시 발생하는 오류 처리 방식을 개선합니다. 기존의 일반적인 오류 메시지 대신, 사용자가 다른 이메일로 연결을 시도하거나, 이메일을 찾을 수 없거나, 이미 사용 중인 자격 증명으로 연결하려 할 때 더 명확하고 구체적인 안내를 제공하여 사용자 경험을 향상시킵니다. 이는 데이터 계층에서 오류를 매핑하고, 프레젠테이션 계층에서 적절한 알림을 표시함으로써 이루어집니다. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
이번 PR은 공급자(provider) 계정 연결 시 발생할 수 있는 다양한 오류 상황에 대해 구체적인 에러 케이스를 정의하고, 사용자에게 상황에 맞는 명확한 안내 메시지를 보여주도록 개선했습니다. 데이터 레이어에서 발생하는 에러를 도메인 에러로 매핑하고, 이를 뷰모델에서 적절히 처리하여 UI에 반영하는 흐름이 명확하게 구현되었습니다. 전반적으로 사용자 경험을 향상시키는 좋은 변경이라고 생각합니다. 코드의 가독성과 안정성을 높이기 위한 몇 가지 작은 제안을 드립니다.
| switch authErrorCode { | ||
| case .credentialAlreadyInUse: | ||
| return AuthError.linkCredentialAlreadyInUse | ||
| default: | ||
| break | ||
| } |
| func linkAlertType(for error: Error) -> AlertType { | ||
| if let authError = error as? AuthError { | ||
| switch authError { | ||
| case .linkEmailNotFound: | ||
| return .linkEmailNotFound | ||
| case .linkEmailMismatch: | ||
| return .linkEmailMismatch | ||
| case .linkCredentialAlreadyInUse: | ||
| return .linkCredentialAlreadyInUse | ||
| default: | ||
| break | ||
| } | ||
| } | ||
|
|
||
| return .error | ||
| } |
There was a problem hiding this comment.
현재 switch 문은 명시적으로 처리되지 않은 케이스에 대해 default: break를 사용하여 함수 마지막의 return .error로 처리 흐름을 넘기고 있습니다. AuthError의 모든 케이스를 switch 문 안에서 명시적으로 처리하도록 변경하면, 향후 AuthError에 새로운 케이스가 추가되었을 때 컴파일러가 이를 감지하여 실수를 방지할 수 있습니다. 이는 코드의 안정성을 높이는 데 도움이 됩니다.
| func linkAlertType(for error: Error) -> AlertType { | |
| if let authError = error as? AuthError { | |
| switch authError { | |
| case .linkEmailNotFound: | |
| return .linkEmailNotFound | |
| case .linkEmailMismatch: | |
| return .linkEmailMismatch | |
| case .linkCredentialAlreadyInUse: | |
| return .linkCredentialAlreadyInUse | |
| default: | |
| break | |
| } | |
| } | |
| return .error | |
| } | |
| func linkAlertType(for error: Error) -> AlertType { | |
| guard let authError = error as? AuthError else { | |
| return .error | |
| } | |
| switch authError { | |
| case .linkEmailNotFound: | |
| return .linkEmailNotFound | |
| case .linkEmailMismatch: | |
| return .linkEmailMismatch | |
| case .linkCredentialAlreadyInUse: | |
| return .linkCredentialAlreadyInUse | |
| case .notAuthenticated, .failedToUnlinkLastProvider, .unsupportedProvider: | |
| return .error | |
| } | |
| } |