Skip to content

πŸ”— :: (#297) pulse μΆ”κ°€ #298

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

Merged
merged 2 commits into from
Apr 27, 2025
Merged

πŸ”— :: (#297) pulse μΆ”κ°€ #298

merged 2 commits into from
Apr 27, 2025

Conversation

juyeong525
Copy link
Contributor

@juyeong525 juyeong525 commented Apr 25, 2025

κ°œμš”

pulse μΆ”κ°€

μž‘μ—…μ‚¬ν•­

  • pulse μΆ”κ°€

Summary by CodeRabbit

  • New Features

    • 개발 λΉŒλ“œ(DEV)μ—μ„œλ§Œ ν‘œμ‹œλ˜λŠ” λ“œλž˜κ·Έ κ°€λŠ₯ν•œ "Console" λ²„νŠΌμ΄ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ²„νŠΌμ„ 톡해 SwiftUI 기반 μ½˜μ†” λ·°λ₯Ό μ—΄μ–΄ 둜그λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 기타

    • Pulse 및 PulseUI λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν”„λ‘œμ νŠΈμ— λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@juyeong525 juyeong525 self-assigned this Apr 25, 2025
@juyeong525 juyeong525 linked an issue Apr 25, 2025 that may be closed by this pull request
Copy link

coderabbitai bot commented Apr 25, 2025

Walkthrough

Pulse 및 PulseUI 라이브러리λ₯Ό ν”„λ‘œμ νŠΈμ— ν†΅ν•©ν•˜λŠ” μž‘μ—…μ΄ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. Tuist 쒅속성 νŒŒμΌμ— Pulse νŒ¨ν‚€μ§€κ°€ μΆ”κ°€λ˜μ—ˆμœΌλ©°, SPM(μŠ€μœ„ν”„νŠΈ νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €) μ˜μ‘΄μ„± λͺ©λ‘μ—λ„ Pulse와 PulseUIκ°€ λ“±λ‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ThirdPartyLib λͺ¨λ“ˆμ΄ 두 라이브러리λ₯Ό μ˜μ‘΄ν•˜λ„λ‘ μˆ˜μ •λ˜μ—ˆκ³ , AppDelegateμ—μ„œ Pulse μ΄ˆκΈ°ν™” μ½”λ“œκ°€ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 개발(DEV) ν™˜κ²½μ—μ„œλ§Œ ν‘œμ‹œλ˜λŠ” "Console" λ²„νŠΌμ΄ BaseTabBarController에 μΆ”κ°€λ˜μ–΄, μ½˜μ†” 둜그λ₯Ό SwiftUI 기반 UI둜 확인할 수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Changes

파일/경둜 κ·Έλ£Ή λ³€κ²½ μš”μ•½
Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+SPM.swift SPM μ˜μ‘΄μ„±μ— Pulse, PulseUIλ₯Ό TargetDependency둜 μΆ”κ°€
Projects/Modules/ThirdPartyLib/Project.swift ThirdPartyLib λͺ¨λ“ˆμ— .SPM.Pulse, .SPM.PulseUI μ˜μ‘΄μ„± μΆ”κ°€
Tuist/Dependencies.swift Pulse νŒ¨ν‚€μ§€(https://github.com/kean/Pulse.git, 버전 4.2.0 이상) μ˜μ‘΄μ„± μΆ”κ°€
Projects/App/Sources/AppDelegate.swift Pulse ν”„λ ˆμž„μ›Œν¬ import 및 URLSessionProxyDelegate μžλ™ 등둝 μ½”λ“œ μΆ”κ°€
Projects/Presentation/Sources/Base/BaseTabBarController.swift DEV ν™˜κ²½μ—μ„œλ§Œ λ…ΈμΆœλ˜λŠ” μ½˜μ†” λ²„νŠΌ μΆ”κ°€, λ²„νŠΌ λ“œλž˜κ·Έ 및 ν„°μΉ˜ μ‹œ SwiftUI 기반 ConsoleView ν‘œμ‹œ κΈ°λŠ₯ κ΅¬ν˜„

Sequence Diagram(s)

sequenceDiagram
    participant User as μ‚¬μš©μž
    participant BaseTabBar as BaseTabBarController
    participant ConsoleView as ConsoleView (SwiftUI)
    participant Pulse as Pulse 라이브러리

    User->>BaseTabBar: μ•± μ‹€ν–‰
    BaseTabBar->>BaseTabBar: (DEV ν™˜κ²½) μ½˜μ†” λ²„νŠΌ 생성 및 화면에 ν‘œμ‹œ
    User->>BaseTabBar: μ½˜μ†” λ²„νŠΌ ν„°μΉ˜
    BaseTabBar->>ConsoleView: UIHostingController둜 ConsoleView ν‘œμ‹œ
    ConsoleView->>Pulse: 둜그 데이터 ν‘œμ‹œ
Loading

Suggested reviewers

  • circle0802
  • HongSJae

Poem

πŸ‡
μƒˆλ‘œ 온 Pulse와 PulseUI,
둜그의 μˆ²μ— 토끼가 λ›°μ–΄λ‹€λ‹ˆμ§€μš”.
μ½˜μ†” λ²„νŠΌ 살짝 눌러,
SwiftUI 창이 ν™œμ§ μ—΄λ €μš”!
κ°œλ°œμžλ‹˜, 둜그 νƒν—˜μ„ μ‹œμž‘ν•΄μš”β€”
토끼도 ν•¨κ»˜, 깑총깑총!

✨ 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.
    • 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 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.

@cyj513
Copy link
Contributor

cyj513 commented Apr 25, 2025

All File Checked βœ…

βœ… Auto Pull Request SwiftLint Success!!!!

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: 0

🧹 Nitpick comments (2)
Projects/Presentation/Sources/Base/BaseTabBarController.swift (2)

14-14: λ²„νŠΌ 크기 μ •μ˜ 방식을 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

CGRectλ₯Ό μ‚¬μš©ν•˜μ—¬ λ²„νŠΌ 크기λ₯Ό μ •μ˜ν•˜λŠ” 것보닀 λ³„λ„μ˜ width와 height 속성을 μ‚¬μš©ν•˜λŠ” 것이 더 λͺ…ν™•ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ½”λ“œ 가독성을 높이고 μœ μ§€ 관리λ₯Ό 더 μ‰½κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

- private let consoleButtonSize: CGRect = CGRect(x: 0, y: 0, width: 100, height: 40)
+ private let consoleButtonWidth: CGFloat = 100
+ private let consoleButtonHeight: CGFloat = 40

그리고 λ²„νŠΌ 생성 뢀뢄도 λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

- private lazy var consoleButton = UIButton(frame: consoleButtonSize).then {
+ private lazy var consoleButton = UIButton(frame: CGRect(x: 0, y: 0, width: consoleButtonWidth, height: consoleButtonHeight)).then {

λ˜ν•œ cornerRadius 뢀뢄도 λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

- $0.layer.cornerRadius = consoleButtonSize.height / 2
+ $0.layer.cornerRadius = consoleButtonHeight / 2

80-86: μ½˜μ†” λ·° ν‘œμ‹œ 방식 κ°œμ„  κ³ λ €

SwiftUI λ·°λ₯Ό ν‘œμ‹œν•˜λŠ” 방식은 μ μ ˆν•˜λ‚˜, λ‹«κΈ° λ²„νŠΌμ΄λ‚˜ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μ½˜μ†”μ„ μ‰½κ²Œ 닫을 수 μžˆλ„λ‘ ν•˜λŠ” 것이 μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬λŠ” μ‹œμŠ€ν…œ back μ œμŠ€μ²˜μ— μ˜μ‘΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

- let view = NavigationView {
-     ConsoleView()
- }
- 
- self.present(UIHostingController(rootView: view), animated: true)
+ let hostingController = UIHostingController(rootView: 
+     NavigationView {
+         ConsoleView()
+             .toolbar {
+                 ToolbarItem(placement: .navigationBarLeading) {
+                     Button("λ‹«κΈ°") {
+                         hostingController.dismiss(animated: true)
+                     }
+                 }
+             }
+     }
+ )
+ self.present(hostingController, animated: true)
πŸ“œ Review details

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

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 7660142 and dfe6431.

πŸ“’ Files selected for processing (5)
  • Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+SPM.swift (1 hunks)
  • Projects/App/Sources/AppDelegate.swift (2 hunks)
  • Projects/Modules/ThirdPartyLib/Project.swift (1 hunks)
  • Projects/Presentation/Sources/Base/BaseTabBarController.swift (3 hunks)
  • Tuist/Dependencies.swift (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
Projects/Presentation/Sources/Base/BaseTabBarController.swift (1)
Projects/Modules/DesignSystem/Sources/Extensions/UILabel/UILabel+setJobisText.swift (1)
  • setJobisText (4-7)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: JOBIS_DSM_iOS | JOBIS v2 CI | Build - iOS
  • GitHub Check: JOBIS_DSM_iOS | JOBIS v2 CI | Test - iOS
πŸ”‡ Additional comments (10)
Tuist/Dependencies.swift (1)

58-62: Pulse 라이브러리 μ˜μ‘΄μ„± μΆ”κ°€κ°€ μ μ ˆν•˜κ²Œ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

Pulse 라이브러리λ₯Ό 4.2.0 버전뢀터 λ‹€μŒ 메이저 버전 λ―Έλ§ŒκΉŒμ§€ μ‚¬μš©ν•˜λ„λ‘ μ„€μ •ν•œ 것이 μ’‹μŠ΅λ‹ˆλ‹€. 이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” λ„€νŠΈμ›Œν¬ λ‘œκΉ… 및 디버깅을 μœ„ν•œ μœ μš©ν•œ 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Projects/App/Sources/AppDelegate.swift (2)

11-11: Pulse 라이브러리 importκ°€ μ μ ˆν•˜κ²Œ μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

λ„€νŠΈμ›Œν¬ λ‘œκΉ… 및 디버깅 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ import ꡬ문이 μ˜¬λ°”λ₯΄κ²Œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


34-34: Pulse λ„€νŠΈμ›Œν¬ λ‘œκΉ… κΈ°λŠ₯이 μ μ ˆν•˜κ²Œ μ΄ˆκΈ°ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Firebase μ„€μ • 직후에 URLSessionProxyDelegate.enableAutomaticRegistration()을 ν˜ΈμΆœν•˜μ—¬ Pulse의 λ„€νŠΈμ›Œν¬ λ‘œκΉ… κΈ°λŠ₯을 ν™œμ„±ν™”ν•œ 것이 μ μ ˆν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ•±μ˜ λ„€νŠΈμ›Œν¬ μš”μ²­μ„ μžλ™μœΌλ‘œ λͺ¨λ‹ˆν„°λ§ν•˜κ³  디버깅할 수 μžˆμŠ΅λ‹ˆλ‹€.

Projects/Modules/ThirdPartyLib/Project.swift (1)

25-27: Pulse 및 PulseUI μ˜μ‘΄μ„±μ΄ ThirdPartyLib λͺ¨λ“ˆμ— μ μ ˆν•˜κ²Œ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ThirdPartyLib λͺ¨λ“ˆμ— Pulse와 PulseUI μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•¨μœΌλ‘œμ¨ ν”„λ‘œμ νŠΈ μ „λ°˜μ—μ„œ 이 λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μ‚¬μš©ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+SPM.swift (1)

23-24: Pulse 및 PulseUI μ˜μ‘΄μ„± μƒμˆ˜κ°€ μ μ ˆν•˜κ²Œ μ •μ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

TargetDependency.SPM ν™•μž₯에 Pulse와 PulseUI에 λŒ€ν•œ μƒμˆ˜λ₯Ό μΆ”κ°€ν•˜μ—¬ ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ μΌκ΄€λœ λ°©μ‹μœΌλ‘œ μ˜μ‘΄μ„±μ„ μ°Έμ‘°ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Projects/Presentation/Sources/Base/BaseTabBarController.swift (5)

5-7: Pulse 및 SwiftUI 톡합이 잘 μ΄λ£¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

SwiftUI와 Pulse 라이브러리λ₯Ό κ°€μ Έμ™€μ„œ μ½˜μ†” λ‘œκΉ… κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” μ ‘κ·Ό 방식이 μ μ ˆν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž„ν¬νŠΈλŠ” DEV ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©λ˜λŠ” μ½˜μ†” κΈ°λŠ₯을 μœ„ν•΄ ν•„μš”ν•©λ‹ˆλ‹€.


20-24: μ½˜μ†” λ²„νŠΌ μŠ€νƒ€μΌλ§μ΄ 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ²„νŠΌ μŠ€νƒ€μΌλ§κ³Ό ν…μŠ€νŠΈ 섀정이 ν”„λ‘œμ νŠΈμ˜ λ””μžμΈ μ‹œμŠ€ν…œμ„ 적절히 ν™œμš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. setJobisText ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μΌκ΄€λœ ν…μŠ€νŠΈ μŠ€νƒ€μΌμ„ μ μš©ν•œ 점이 μ’‹μŠ΅λ‹ˆλ‹€.


36-38: DEV ν™˜κ²½μ—μ„œλ§Œ μ½˜μ†” λ²„νŠΌμ„ ν‘œμ‹œν•˜λŠ” 것은 쒋은 μ ‘κ·Όμž…λ‹ˆλ‹€.

개발 ν™˜κ²½μ—μ„œλ§Œ 디버깅 도ꡬλ₯Ό ν‘œμ‹œν•˜λŠ” μ „λž΅μ€ μ μ ˆν•©λ‹ˆλ‹€. μ΄λŠ” ν”„λ‘œλ•μ…˜ λΉŒλ“œμ—μ„œ λΆˆν•„μš”ν•œ UI μš”μ†Œλ₯Ό μ œκ±°ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ ν•΄μΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


41-50: μ½˜μ†” λ²„νŠΌ 섀정이 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ²„νŠΌμ˜ μœ„μΉ˜ μ§€μ • 및 제슀처 인식기 섀정이 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν™”λ©΄ 우츑 ν•˜λ‹¨μ— μœ„μΉ˜μ‹œν‚€λŠ” 것은 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ°©ν•΄ν•˜μ§€ μ•ŠμœΌλ©΄μ„œλ„ 접근성을 μœ μ§€ν•˜λŠ” 쒋은 λ°©λ²•μž…λ‹ˆλ‹€.


68-78: λ“œλž˜κ·Έ κΈ°λŠ₯이 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Pan 제슀처λ₯Ό ν†΅ν•œ λ²„νŠΌ λ“œλž˜κ·Έ κΈ°λŠ₯이 ν‘œμ€€ μ ‘κ·Ό 방식을 따라 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 특히 setTranslation(CGPoint.zero, in: consoleButton)λ₯Ό 톡해 λˆ„μ  효과λ₯Ό λ°©μ§€ν•˜λŠ” 방식이 μ μ ˆν•©λ‹ˆλ‹€.

@cyj513 cyj513 merged commit 42d2e13 into develop Apr 27, 2025
4 checks passed
@cyj513 cyj513 deleted the feature/(#297)-pulse branch April 27, 2025 12:48
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.

Pulse μΆ”κ°€
3 participants