Skip to content
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

Closed
wants to merge 7 commits into from

Conversation

dani784601
Copy link
Owner

@dani784601 dani784601 commented Oct 7, 2024

Summary by CodeRabbit

  • 새로운 기능

    • 로그인 양식의 입력 유효성 검사를 변경하여 사용자가 입력을 수정할 때 즉각적인 피드백을 받을 수 있도록 개선.
    • 회원가입 양식에 비밀번호 확인 필드를 추가하여 비밀번호 일치 여부를 검사하고, 오류 메시지를 명확하게 표시.
    • 이메일이 이미 사용 중일 때 적절한 메시지를 표시하는 피드백 다이얼로그 추가.
  • 버그 수정

    • 오류 메시지 표시 로직을 개선하여 올바른 DOM 요소에 메시지가 표시되도록 수정.

Copy link

coderabbitai bot commented Oct 7, 2024

📝 Walkthrough

Walkthrough

이 변경 사항은 sign-in.htmlsign-up.html 파일에 대한 수정 사항을 포함하고 있습니다. sign-in.html에서는 이메일과 비밀번호 입력 필드의 이벤트 리스너가 blur에서 change로 변경되어 입력값이 변경될 때 유효성 검사 메시지가 표시됩니다. sign-up.html에서는 비밀번호 확인 필드에 대한 오류 처리 기능이 추가되어 입력된 비밀번호와 확인 입력이 일치하는지 확인합니다. 전반적으로 사용자 피드백을 개선하고 폼의 유효성 검사를 최적화하는 데 중점을 두었습니다.

Changes

파일 변경 요약
pages/sign-in.html 이메일 및 비밀번호 필드의 이벤트 리스너를 blur에서 change로 변경, 비밀번호 필드의 오류 메시지 접근 방식 수정.
pages/sign-up.html 비밀번호 확인 필드에 대한 오류 처리 추가, 오류 메시지 표시 로직 개선, 버튼 클릭 핸들러 수정.

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
Loading

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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

netlify bot commented Oct 7, 2024

Deploy Preview for jocular-mermaid-f07db6 ready!

Name Link
🔨 Latest commit 47bec06
🔍 Latest deploy log https://app.netlify.com/sites/jocular-mermaid-f07db6/deploys/6703380fd0c75d000885cc0d
😎 Deploy Preview https://deploy-preview-1--jocular-mermaid-f07db6.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 96
Accessibility: 97
Best Practices: 92
SEO: 83
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify site configuration.

@dani784601
Copy link
Owner Author

@coderabbitai review

Copy link

coderabbitai bot commented Oct 7, 2024

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link

@coderabbitai coderabbitai bot left a 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'로 변경한 것은 이메일 입력 필드와 일관성을 유지하여 좋습니다. 오류 메시지 처리 로직도 잘 구현되었습니다.

몇 가지 개선 제안:

  1. 이메일 입력 필드와 마찬가지로 'input' 이벤트 사용을 고려해 보세요.

  2. 오류 메시지 요소 선택 방식을 간소화할 수 있습니다:

const errMsg = userPassword.nextElementSibling;
  1. 코드 중복을 줄이기 위해 공통 함수를 만들어 사용하는 것이 좋습니다. 예:
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

📥 Commits

Files that changed from the base of the PR and between b5c61ec and 47bec06.

📒 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.

Comment on lines +182 to +186
document.querySelector('dialog p').textContent = '회원가입이 완료되었습니다.';
document.querySelector('dialog button').onclick = () => {
document.querySelector('dialog').close();
window.location.pathname = '/pages/sign-in.html';
}
Copy link

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 설정 부분이 ifelse 블록에서 반복되고 있습니다. 중복 코드를 제거하고 가독성을 향상시키기 위해 해당 코드를 조건문 밖으로 이동시키는 것을 추천합니다.

다음과 같이 수정할 수 있습니다:

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.


⚠️ Potential issue

회원가입 완료 시 사용자 데이터 저장이 필요합니다

회원가입이 완료되었을 때, 새로운 사용자의 데이터를 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;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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.

Suggested change
const errMsg = input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling;
const errMsg = input.nextElementSibling && input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling;

@dani784601 dani784601 closed this Oct 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant