-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Basic 김지연 sprint3 #1
The head ref may contain hidden characters: "basic-\uAE40\uC9C0\uC5F0-sprint3"
Conversation
📝 WalkthroughWalkthrough이 변경 사항은 Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant SignInPage
participant SignUpPage
User->>SignInPage: 이메일 및 비밀번호 입력
SignInPage->>SignInPage: 입력값 변경 이벤트 발생
SignInPage->>User: 유효성 검사 메시지 표시
User->>SignUpPage: 이메일 및 비밀번호 입력
SignUpPage->>SignUpPage: 비밀번호 확인 입력
SignUpPage->>SignUpPage: 비밀번호 일치 검사
alt 비밀번호 불일치
SignUpPage->>User: 오류 메시지 표시
else 비밀번호 일치
SignUpPage->>User: 성공 메시지 표시 및 리디렉션
end
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
✅ Deploy Preview for jocular-mermaid-f07db6 ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Outside diff range and nitpick comments (2)
pages/sign-in.html (2)
Line range hint
140-156
: 이벤트 리스너 변경 및 오류 메시지 처리 개선이메일 입력 필드의 이벤트 리스너를 'blur'에서 'change'로 변경한 것은 좋은 개선입니다. 사용자에게 더 즉각적인 피드백을 제공할 수 있게 되었습니다. 오류 메시지의 페이드 인/아웃 효과도 사용자 경험을 향상시킵니다.
한 가지 제안: 'change' 이벤트는 입력 필드에서 포커스가 벗어날 때만 발생합니다. 더 즉각적인 피드백을 위해 'input' 이벤트를 고려해 보는 것은 어떨까요? 예를 들어:
userEmail.addEventListener('input', () => { // 현재 로직 });이렇게 하면 사용자가 타이핑할 때마다 유효성 검사가 실행됩니다.
Line range hint
157-176
: 비밀번호 입력 처리 개선 및 일관성 유지비밀번호 입력 필드의 이벤트 리스너를 'change'로 변경한 것은 이메일 입력 필드와 일관성을 유지하여 좋습니다. 오류 메시지 처리 로직도 잘 구현되었습니다.
몇 가지 개선 제안:
이메일 입력 필드와 마찬가지로 'input' 이벤트 사용을 고려해 보세요.
오류 메시지 요소 선택 방식을 간소화할 수 있습니다:
const errMsg = userPassword.nextElementSibling;
- 코드 중복을 줄이기 위해 공통 함수를 만들어 사용하는 것이 좋습니다. 예:
function handleInputValidation(input, errMsgElement, errMsgTypes) { if (!input.validity.valid) { errMsgElement.classList.add('fade-in'); submitBtn.classList.replace('bg-primary', 'bg-gray400'); errMsgElement.textContent = input.value.length > 0 ? errMsgTypes.invalid : errMsgTypes.empty; } else { errMsgElement.classList.replace('fade-in', 'fade-out'); setTimeout(() => { errMsgElement.textContent = ''; }, 300); if (userEmail.validity.valid && userPassword.validity.valid) { submitBtn.classList.replace('bg-gray400', 'bg-primary'); } } } userPassword.addEventListener('input', () => { handleInputValidation(userPassword, userPassword.nextElementSibling, errMsgType.password); });이렇게 하면 코드의 재사용성과 유지보수성이 향상됩니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (2)
- pages/sign-in.html (2 hunks)
- pages/sign-up.html (3 hunks)
🧰 Additional context used
🔇 Additional comments (1)
pages/sign-up.html (1)
167-171
:⚠️ Potential issue
formdata
이벤트 대신 적절한 이벤트로 변경해주세요현재
formdata
이벤트를 사용하고 있는데, 이 이벤트는 폼이 제출될 때 발생하며 모든 브라우저에서 지원되지 않을 수 있습니다. 입력 값의 유효성 변경에 따라 버튼의 상태를 업데이트하려면input
또는change
이벤트를 사용하는 것이 더 적합합니다.예를 들어 다음과 같이 수정할 수 있습니다:
- form.addEventListener('formdata', (e) => { + form.addEventListener('input', (e) => {Likely invalid or redundant comment.
document.querySelector('dialog p').textContent = '회원가입이 완료되었습니다.'; | ||
document.querySelector('dialog button').onclick = () => { | ||
document.querySelector('dialog').close(); | ||
window.location.pathname = '/pages/sign-in.html'; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
중복된 코드 리팩토링을 고려해주세요
document.querySelector('dialog button').onclick
설정 부분이 if
와 else
블록에서 반복되고 있습니다. 중복 코드를 제거하고 가독성을 향상시키기 위해 해당 코드를 조건문 밖으로 이동시키는 것을 추천합니다.
다음과 같이 수정할 수 있습니다:
if (USER_DATA_MAP.has(userInputs.email.value)) {
document.querySelector('dialog p').textContent = '사용 중인 이메일입니다.';
} else {
document.querySelector('dialog p').textContent = '회원가입이 완료되었습니다.';
+ document.querySelector('dialog button').onclick = () => {
+ document.querySelector('dialog').close();
+ window.location.pathname = '/pages/sign-in.html';
+ }
}
- document.querySelector('dialog button').onclick = () => {
- document.querySelector('dialog').close();
- }
document.querySelector('dialog').showModal();
또는 onclick
핸들러 내부에서 조건에 따라 동작을 분기할 수도 있습니다.
Committable suggestion was skipped due to low confidence.
회원가입 완료 시 사용자 데이터 저장이 필요합니다
회원가입이 완료되었을 때, 새로운 사용자의 데이터를 USER_DATA_MAP
등에 저장하여 이후 로그인이 가능하도록 구현해야 합니다. 현재 코드에서는 사용자 데이터 저장에 대한 처리가 없습니다.
회원가입 완료 시 다음과 같이 사용자 데이터를 저장하는 로직을 추가하는 것을 제안합니다:
if (USER_DATA_MAP.has(userInputs.email.value)) {
// 기존 코드 유지
} else {
// 기존 코드 유지
+ USER_DATA_MAP.set(userInputs.email.value, {
+ nickname: userInputs.nickname.value,
+ password: userInputs.password.value
+ });
}
이렇게 하면 가입한 사용자가 로그인 시도 시 올바르게 인증될 수 있습니다.
Committable suggestion was skipped due to low confidence.
@@ -141,19 +139,20 @@ | |||
} | |||
input.checkValidity(); | |||
const formData = new FormData(form); | |||
const errMsg = input.parentElement.nextElementSibling | |||
const errMsg = input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
input.nextElementSibling
가 null일 수 있으므로 안전하게 접근해주세요
input.nextElementSibling
가 존재하지 않을 경우 .tagName
에 접근하면 오류가 발생합니다. 이를 방지하기 위해 input.nextElementSibling
의 존재 여부를 먼저 확인하는 조건을 추가하는 것이 좋습니다.
다음과 같이 수정할 수 있습니다:
- const errMsg = input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling;
+ const errMsg = input.nextElementSibling && input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling;
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
const errMsg = input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling; | |
const errMsg = input.nextElementSibling && input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling; |
Summary by CodeRabbit
새로운 기능
버그 수정