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

fix: loaded draft setting logic #391

Merged

Conversation

enc2586
Copy link
Member

@enc2586 enc2586 commented Nov 18, 2024

영어공지 데이터를 추가하려면 reducer에서 TOGGLE_ENGLISH_VERSION 실행이 필요했었습니다. 이를 추가했습니다.

PR 390과 유사한 문제도 있길래 함께 해결했습니다.
잘못 사용된 early return을 없앴고, 영어공지 로딩 로직을 수정했으며, deadline 로딩 로직을 추가했습니다.

개인적인 의견으로, editorStateReducer의 구조에 문제가 있습니다. 영어공지 draft 로딩이 필요할 경우 TOGGLE_ENGLISH_VERSION 실행 후에야 내용을 변경할 수 있는데, state.english 값을 곧바로 수정 가능한 action을 만들어 사용하는게 코드 가독성 면에서 좋아보입니다. 비슷한 코드를 다른 곳(공지 수정 로직)에서 또 사용해야 하기도 하구요.

Summary by CodeRabbit

  • 새로운 기능

    • 초안 공지사항 처리 및 기존 공지사항 로딩 기능 개선.
    • 영어 콘텐츠에 대한 추가 콘텐츠 존재 여부 확인 기능 추가.
  • 버그 수정

    • 공지사항 로딩 로직 개선으로 상태 관리 최적화.
    • 빈 문자열이 있을 경우에도 한국어 및 영어 버전의 추가 콘텐츠를 일관되게 처리.
  • 문서화

    • NoticeEditorProps 인터페이스 업데이트로 공지사항 속성 구조 개선.

@enc2586 enc2586 linked an issue Nov 18, 2024 that may be closed by this pull request
Copy link
Contributor

coderabbitai bot commented Nov 18, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

NoticeEditor.tsx 파일에서의 변경 사항은 초안 공지 및 기존 공지 로딩 처리 방식을 개선하는 데 중점을 두고 있습니다. 초안 객체를 구조 분해하여 상태에 값을 보다 체계적으로 할당하도록 수정하였으며, korean, english, deadline 속성을 추출하여 해당 구조에 맞게 디스패치 작업을 업데이트했습니다. 기존 공지 로딩 로직도 개선되어 currentDeadline이 상태로 설정되도록 하였습니다. 오류 처리 및 사용자 알림은 유지되며, UI 요소와 기능은 크게 변경되지 않았습니다.

Changes

파일 경로 변경 요약
src/app/[lng]/write/NoticeEditor.tsx - 초안 객체 구조 분해 및 상태 할당 개선
- 기존 공지 로딩 로직 수정
- NoticeEditorProps 인터페이스 업데이트 (선택적 필드 추가)
- NOTICE_LOCAL_STORAGE_KEY 상수 업데이트

Possibly related PRs

  • refactor #369: NoticeEditor.tsx에서 초안 공지 및 기존 공지 처리와 관련된 변경 사항은 동일 파일에서 공지 편집 기능을 확장하고 상태 관리를 도입한 PR과 관련이 있습니다.
  • fix: unintended early return #390: NoticeEditor.tsx에서 기존 공지 로딩 및 콘텐츠 존재 여부에 따른 액션 디스패치 로직을 개선한 PR로, 본 PR의 개선 사항과 직접적으로 관련이 있습니다.

Suggested reviewers

  • 2paperstar
  • ParkJumyung

🐇 변화의 순간, 기쁨의 노래
초안과 공지를, 함께 나누어요.
상태를 정리하고, 알림도 챙기고,
모두의 편의를 위해, 손을 맞잡아요!
새로운 시작에, 함께 뛰어보아요! 🌼


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 4de6a84 and 52ccdec.

📒 Files selected for processing (1)
  • src/app/[lng]/write/NoticeEditor.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/app/[lng]/write/NoticeEditor.tsx

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
Contributor

@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: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 257c5f1 and 4de6a84.

📒 Files selected for processing (1)
  • src/app/[lng]/write/NoticeEditor.tsx (1 hunks)
🔇 Additional comments (1)
src/app/[lng]/write/NoticeEditor.tsx (1)

Line range hint 150-170: 날짜 유효성 검사 추가 필요

currentDeadline 값이 유효하지 않은 경우에 대한 처리가 필요합니다.

다음 스크립트로 날짜 형식 검증이 필요한 다른 부분을 확인할 수 있습니다:

다음과 같이 수정하는 것을 제안합니다:

const {
  title: koreanTitle,
  content: koreanContent,
  enTitle: englishTitle,
  enContent: englishContent,
  currentDeadline: deadline,
} = notice;

+ const validDeadline = deadline ? dayjs(deadline).isValid() ? dayjs(deadline) : undefined : undefined;

dispatch({ type: 'SET_KOREAN_TITLE', koreanTitle });
dispatch({ type: 'SET_KOREAN_CONTENT', koreanContent });
dispatch({
  type: 'SET_ADDITIONAL_KOREAN_CONTENT',
  additionalKoreanContent: '',
});
if (englishTitle === undefined || englishContent === undefined) return;
dispatch({ type: 'SET_ENGLISH_TITLE', englishTitle });
dispatch({ type: 'SET_ENGLISH_CONTENT', englishContent });
dispatch({
  type: 'SET_ADDITIONAL_ENGLISH_CONTENT',
  additionalEnglishContent: '',
});
- dispatch({ type: 'SET_DEADLINE', deadline: dayjs(deadline) });
+ dispatch({ type: 'SET_DEADLINE', deadline: validDeadline });

src/app/[lng]/write/NoticeEditor.tsx Show resolved Hide resolved
Copy link

@enc2586 enc2586 merged commit 495ed91 into master Nov 19, 2024
3 checks passed
@enc2586 enc2586 deleted the 387-runtime-error-while-loading-saved-notice-on-client branch November 19, 2024 06:56
@enc2586 enc2586 self-assigned this Nov 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Runtime error while loading saved notice on client
1 participant