Skip to content

Conversation

@choihooo
Copy link
Contributor

@choihooo choihooo commented May 29, 2025

🧐 체크리스트

  • 코드 실행 확인: yarn build 또는 npm run build 실행 후 정상적으로 동작하는지 확인했나요?
  • 테스트 통과 여부: Jest 테스트를 실행했고 모든 테스트가 통과했나요? (yarn test)
  • ESLint & Prettier 검사: yarn lintyarn prettify 실행 후 문제가 없나요?
  • PR 제목 확인: PR 제목이 feat:, fix:, chore: 등 커밋 컨벤션을 따르고 있나요?
  • 변경 사항 설명: PR 설명에 변경된 내용을 충분히 작성했나요?
  • 리뷰어가 이해하기 쉽게 작성: 코드 리뷰어가 쉽게 이해할 수 있도록 가독성 높은 코드를 작성했나요?
  • 문서 업데이트 필요 여부: 기능 추가/변경 사항이 있다면 README.md 또는 관련 문서를 업데이트했나요?

Summary by CodeRabbit

  • 신규 기능
    • ALT+V 및 ALT+A 단축키로 iframe 버튼의 표시/숨김 상태를 보다 세밀하게 제어할 수 있습니다.
  • 버그 수정
    • ALT+A 또는 ALT+V로 숨긴 경우, 툴바 아이콘 클릭 및 사이드바/스타일 토글 시 iframe이 잘못 생성되지 않도록 개선되었습니다.
  • 기능 개선
    • 툴바 아이콘 클릭 시 iframe 표시/숨김 동작이 보다 직관적으로 동작하도록 변경되었습니다.

@choihooo choihooo linked an issue May 29, 2025 that may be closed by this pull request
@coderabbitai
Copy link

coderabbitai bot commented May 29, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

이 변경 사항은 브라우저 확장 프로그램의 툴바 아이콘 클릭 시 동작을 기존의 모달 토글에서 새로운 아이콘 토글 핸들러로 교체하고, iframe의 가시성 상태를 ALT+A 및 ALT+V 단축키와 연동하여 세밀하게 관리하는 로직을 추가합니다. 여러 핸들러에서 iframe 표시 및 상태 플래그 관리가 강화되었습니다.

Changes

파일/경로 그룹 변경 요약
src/background/index.ts 아이콘 클릭 이벤트 핸들러를 handleModalToggle()에서 handleIconToggle()으로 변경.
src/background/listeners/iconHandler.ts handleIconToggle 함수 신설. iframe 상태 및 표시 플래그(ALT+A, ALT+V) 관리 로직 구현.
src/background/listeners/iframeCommandHandler.ts ALT+A로 숨겨진 경우 iframe 생성 차단, ALT+V 관련 플래그 추가 및 상태 관리 로직 보강.
src/background/listeners/sidebarCommandHandler.ts logger import 제거, ALT+A로 숨겨진 경우 iframe 생성 차단 로직 추가.
src/background/listeners/styleCommandHandler.ts ALT+V 플래그(iframeHiddenByAltV) 추가, iframe 생성/제거 시 플래그 동기화 및 생성 차단 로직 강화.

Sequence Diagram(s)

sequenceDiagram
    participant User as 사용자
    participant Browser as 브라우저
    participant BG as 백그라운드 스크립트
    participant Tab as 활성 탭

    User->>Browser: 툴바 아이콘 클릭
    Browser->>BG: chrome.action.onClicked 이벤트
    BG->>BG: handleIconToggle() 호출
    BG->>Browser: 활성 탭 조회
    BG->>Tab: 스크립트 주입(iframe 상태 확인 및 토글)
    alt ALT+A로 숨겨진 경우
        Tab-->>BG: iframe 생성하지 않고 종료
    else ALT+V로 숨겨진 경우
        Tab->>Tab: iframe 새로 생성 및 플래그 초기화
    else iframe 이미 있음
        Tab->>Tab: postMessage로 토글, 필요시 제거 및 플래그 갱신
    end
Loading

Possibly related PRs

  • Feat/shortcut #79: iframe의 ALT+A 플래그 및 상태 관리 로직을 도입·개선한 PR로, 이번 변경의 iframe 상태 플래그 관리 확장 및 handleIconToggle 도입과 직접적으로 연관됨.

Poem

🐇
아이콘을 톡—클릭하면
iframe이 숨었다 나타났다
ALT+A, ALT+V도 기억하며
똑똑하게 깜빡이는 창
플래그와 함께 춤추는
우리 확장, 오늘도 반짝!

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/background/listeners/sidebarCommandHandler.ts

Oops! Something went wrong! :(

ESLint: 9.27.0

Error: The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
at /node_modules/eslint/lib/config/config-loader.js:142:9
at async loadTypeScriptConfigFileWithJiti (/node_modules/eslint/lib/config/config-loader.js:141:25)
at async loadConfigFile (/node_modules/eslint/lib/config/config-loader.js:259:11)
at async ConfigLoader.calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:578:23)
at async #calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:759:23)
at async /node_modules/eslint/lib/eslint/eslint.js:760:6
at async Promise.all (index 0)
at async ESLint.lintFiles (/node_modules/eslint/lib/eslint/eslint.js:757:19)
at async Object.execute (/node_modules/eslint/lib/cli.js:639:14)
at async main (/node_modules/eslint/bin/eslint.js:175:19)

src/background/index.ts

Oops! Something went wrong! :(

ESLint: 9.27.0

Error: The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
at /node_modules/eslint/lib/config/config-loader.js:142:9
at async loadTypeScriptConfigFileWithJiti (/node_modules/eslint/lib/config/config-loader.js:141:25)
at async loadConfigFile (/node_modules/eslint/lib/config/config-loader.js:259:11)
at async ConfigLoader.calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:578:23)
at async #calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:759:23)
at async /node_modules/eslint/lib/eslint/eslint.js:760:6
at async Promise.all (index 0)
at async ESLint.lintFiles (/node_modules/eslint/lib/eslint/eslint.js:757:19)
at async Object.execute (/node_modules/eslint/lib/cli.js:639:14)
at async main (/node_modules/eslint/bin/eslint.js:175:19)

src/background/listeners/iframeCommandHandler.ts

Oops! Something went wrong! :(

ESLint: 9.27.0

Error: The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.
at /node_modules/eslint/lib/config/config-loader.js:142:9
at async loadTypeScriptConfigFileWithJiti (/node_modules/eslint/lib/config/config-loader.js:141:25)
at async loadConfigFile (/node_modules/eslint/lib/config/config-loader.js:259:11)
at async ConfigLoader.calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:578:23)
at async #calculateConfigArray (/node_modules/eslint/lib/config/config-loader.js:759:23)
at async /node_modules/eslint/lib/eslint/eslint.js:760:6
at async Promise.all (index 0)
at async ESLint.lintFiles (/node_modules/eslint/lib/eslint/eslint.js:757:19)
at async Object.execute (/node_modules/eslint/lib/cli.js:639:14)
at async main (/node_modules/eslint/bin/eslint.js:175:19)

  • 2 others

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e1fb5fb and e163f43.

📒 Files selected for processing (5)
  • src/background/index.ts (2 hunks)
  • src/background/listeners/iconHandler.ts (1 hunks)
  • src/background/listeners/iframeCommandHandler.ts (2 hunks)
  • src/background/listeners/sidebarCommandHandler.ts (1 hunks)
  • src/background/listeners/styleCommandHandler.ts (2 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ 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.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 explain its main purpose.
    • @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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this 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.

@choihooo choihooo merged commit 754ea9d into main May 29, 2025
0 of 2 checks passed
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.

fix: 단축키 수정

2 participants