-
Notifications
You must be signed in to change notification settings - Fork 1
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
๐ :: [#170] ControlCenter ์์ ฏ ์ถ๊ฐ #171
Conversation
โ PR์ Assign ์๋ ์ง์ ์ ์ฑ๊ณตํ์ด์! |
โ ์ด์์ PR์ Labels ๋๊ธฐํ๋ฅผ ์ฑ๊ณตํ์ด์! |
@baekteun ์๋ ํ์ธ์! pr์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. controlcenter ์์ ฏ ์ถ๊ฐ์ ๋ํ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๊ฒ ์ต๋๋ค. โ Actions performedReview triggered.
|
์ํฌ์ค๋ฃจ์ด ํ ๋ฆฌํ์คํธ๋ ์ฌ๋ฌ ํ์ผ์ ๊ฑธ์ณ ํ๋ก์ ํธ ๊ตฌ์ฑ๊ณผ ์์กด์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ GRDB.swift ํจํค์ง ๋ฒ์ ์ ๊ทธ๋ ์ด๋, ์๋ก์ด iOS ์์ ฏ ์ถ๊ฐ, ๋น๋ ์คํฌ๋ฆฝํธ ๋ฐ ํ๊ฒฝ ์ค์ ์กฐ์ ์ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ์ฑ์ ๊ธฐ๋ฅ์ฑ๊ณผ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ
์ํ์ค ๋ค์ด์ด๊ทธ๋จsequenceDiagram
participant User
participant Widget
participant App
User->>Widget: ์์ ฏ ๋ฒํผ ํญ
Widget->>App: TodayWhatAppOpenIntent ์คํ
App->>User: ์ฑ ์ด๊ธฐ ๋ฐ ํน์ ํ๋ฉด ํ์
์
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 (
|
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: 0
๐งน Nitpick comments (6)
Projects/App/iOS-Widget/Sources/TimeTableControlWidget/TimeTableControlWidget.swift (1)
13-19
: ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ ์ ์ํ ์ ์ํ์ฌ ๊ตฌํ์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์์ผ๋, ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ์ฌํญ์ ๊ณ ๋ คํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค:
- ์ ๊ทผ์ฑ ๋ ์ด๋ธ ์ถ๊ฐ
- ๋ฒํผ ์ํธ์์ฉ ์ ํ ํฑ ํผ๋๋ฐฑ ์ ๊ณต
ControlWidgetButton(action: TodayWhatAppOpenIntent()) { Label { Text("์๊ฐํ") + .accessibilityLabel("์๊ฐํ ๋ณด๊ธฐ") } icon: { Image(systemName: "clock.fill") + .accessibilityHidden(true) } }Projects/App/Intents/TodayWhatAppOpenIntent.swift (2)
3-16
: ์ฑ ๋ด๋น๊ฒ์ด์ ์ธํ ํธ ๊ตฌํ์ด ์ ์ ํฉ๋๋ค.์ธํ ํธ ๊ตฌํ์ด ์ ๋์ด์์ผ๋, ๋ค์ ๊ฐ์ ์ฌํญ์ ๊ณ ๋ คํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค:
- ์ฑ๊ณต/์คํจ ์๋๋ฆฌ์ค์ ๋ํ ์ค๋ฅ ์ฒ๋ฆฌ ์ถ๊ฐ
- ์ํ ๊ฒฐ๊ณผ์ ๋ํ ์ฌ์ฉ์ ํผ๋๋ฐฑ ์ ๊ณต
func perform() async throws -> some IntentResult { + do { + // ์ฑ ์คํ ๋ก์ง return .result() + } catch { + return .result( + value: false, + error: "์ฑ์ ์คํํ ์ ์์ต๋๋ค. ๋ค์ ์๋ํด์ฃผ์ธ์." + ) + } }
18-27
: ๋ด๋น๊ฒ์ด์ ๋์ ํ์ฅ ๊ณ ๋ คํ์ฌ๋ ํ ํ๋ฉด๋ง ์ง์ํ๊ณ ์์ต๋๋ค. ์ถํ ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด๋ค๋ ์ง์ํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ธ์:
- ๊ธ์ ํ๋ฉด
- ์๊ฐํ ํ๋ฉด
Tuist/ProjectDescriptionHelpers/GenerateEnvironment.swift (1)
15-26
: iOS์ macOS ์คํฌ๋ฆฝํธ ๋ถ๋ฆฌ๊ฐ ์ ๋์์ต๋๋ค.ํ๋ซํผ๋ณ ์คํฌ๋ฆฝํธ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ์ด ํฅ์๋์์ต๋๋ค. ๋ค๋ง ๋ค์ ์ฌํญ์ ๊ณ ๋ คํด๋ณด์ธ์:
- ์ค๋ณต๋ ์คํฌ๋ฆฝํธ ์ค์ ์ ์์๋ก ๋ถ๋ฆฌ
- ๊ฐ ํ๊ฒฝ๋ณ ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ์ ๋ํ ๋ฌธ์ํ ์ถ๊ฐ
+/// ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ์คํฌ๋ฆฝํธ ์ค์ +private extension GenerateEnvironment { + static let commonDevScripts: [TargetScript] = [ + .swiftLint, + .firebaseCrashlytics + ] +}Also applies to: 28-38
Projects/App/iOS-Widget/Sources/MealControlWidget/MealControlWidget.swift (1)
34-38
: ์๊ฐ ๊ณ์ฐ ๋ก์ง ๊ฐ์ ์ ์ ์๋๋ฆฝ๋๋ค.ํ์ฌ ์๊ฐ ๊ณ์ฐ์ด
Date()
๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์๋๋ฐ, ํ ์คํธ ์ฉ์ด์ฑ๊ณผ ์๊ฐ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ์์กด์ฑ ์ฃผ์ ์ ๊ณ ๋ คํด๋ณด์๋ ๊ฒ์ ์ด๋จ๊น์?struct MealControlValueProvider: ControlValueProvider { + private let calendar: Calendar + + init(calendar: Calendar = .current) { + self.calendar = calendar + } + func currentValue() async throws -> Value { - let today = Date() + let today = calendar.currentDate let partTime = MealPartTime(hour: today) return .init(partTime: partTime) } }Tuist/ProjectDescriptionHelpers/Action/Action+Template.swift (1)
Line range hint
41-52
: ์คํฌ๋ฆฝํธ ์๋ฌ ์ฒ๋ฆฌ ๊ฐ์ ์ ์ ์๋๋ฆฝ๋๋ค.ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ๋ํ ์๋ฌ ์ฒ๋ฆฌ๊ฐ ์ถ๊ฐ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
script: """ + if [ ! -f "$SRCROOT/macOS/Resources/GoogleService-Info.plist" ]; then + echo "Error: Firebase configuration file not found" + exit 1 + fi + case "${CONFIGURATION}" in
๐ Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
โ Files ignored due to path filters (1)
Projects/App/iOS-Widget/Resources/Assets.xcassets/MealControlCenter.imageset/rice_control_center.svg
is excluded by!**/*.svg
๐ Files selected for processing (13)
.gitignore
(1 hunks)Package.resolved
(1 hunks)Package.swift
(1 hunks)Projects/App/Intents/TodayWhatAppOpenIntent.swift
(1 hunks)Projects/App/Project.swift
(4 hunks)Projects/App/iOS-Widget/Resources/Assets.xcassets/MealControlCenter.imageset/Contents.json
(1 hunks)Projects/App/iOS-Widget/Sources/MealControlWidget/MealControlWidget.swift
(1 hunks)Projects/App/iOS-Widget/Sources/TimeTableControlWidget/TimeTableControlWidget.swift
(1 hunks)Projects/App/iOS-Widget/Sources/TodayWhatWidget.swift
(1 hunks)Tuist/ProjectDescriptionHelpers/Action/Action+Template.swift
(1 hunks)Tuist/ProjectDescriptionHelpers/GenerateEnvironment.swift
(1 hunks)Tuist/ProjectDescriptionHelpers/Project/Project+makeModule.swift
(1 hunks)Tuist/ProjectDescriptionHelpers/Target/TargetSpec.swift
(1 hunks)
โ Files skipped from review due to trivial changes (1)
- Projects/App/iOS-Widget/Resources/Assets.xcassets/MealControlCenter.imageset/Contents.json
๐ Additional comments (13)
Package.swift (1)
27-27
: GRDB.swift ๋ฒ์ ์ ๋ฐ์ดํธ ๊ฒ์ฆ ํ์GRDB.swift ๋ฒ์ ์ด 6.24.2์์ 6.29.3์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ๋ง์ด๋ ๋ฒ์ ์ ๋ฐ์ดํธ์ด์ง๋ง ํธํ์ฑ ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค.
๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ GRDB.swift์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ์ธ์:
โ Verification successful
GRDB.swift ๋ฒ์ ์ ๋ฐ์ดํธ ๊ฒ์ฆ ์๋ฃ
6.24.2์์ 6.29.3์ผ๋ก์ ์ ๋ฐ์ดํธ๋ ์์ ํฉ๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ:
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ฐ์
- ๋์ฝ๋ฉ ๋ฒ๊ทธ ์์
- ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ (๋จ์ผ ๊ฐ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ)
- ์ฑ๋ฅ ๋ฐ ์์ ์ฑ ๊ฐ์
ํธํ์ฑ ๋ฌธ์ ๋ ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์งํํด๋ ์ข์ต๋๋ค.
๐ Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: GRDB.swift ๋ฒ์ 6.24.2์์ 6.29.3 ์ฌ์ด์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ ํ์ธ # GitHub API๋ฅผ ํตํด ๋ฆด๋ฆฌ์ค ๋ ธํธ ํ์ธ gh api \ -H "Accept: application/vnd.github+json" \ repos/groue/GRDB.swift/releases \ --jq '.[] | select(.tag_name | startswith("v6.")) | select(.tag_name >= "v6.24.2" and .tag_name <= "v6.29.3") | {version: .tag_name, body: .body}'Length of output: 6588
Package.resolved (1)
71-72
: ๋ฒ์ ์ผ๊ด์ฑ ํ์ธ ์๋ฃPackage.swift์ Package.resolved ํ์ผ์์ GRDB.swift ๋ฒ์ ์ด ์ผ๊ด๋๊ฒ 6.29.3์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
Projects/App/iOS-Widget/Sources/TimeTableControlWidget/TimeTableControlWidget.swift (1)
5-8
: iOS 18.0 ์ด์ ์๊ตฌ์ฌํญ ๋ช ์๊ฐ ์ ์ ํฉ๋๋ค.๊ฐ์ฉ์ฑ ์ฒดํฌ๋ฅผ ํตํด iOS 18.0 ์ด์์์๋ง ์์ ฏ์ด ๋์ํ๋๋ก ์ ํํ ๊ฒ์ด ์ ์ ํฉ๋๋ค.
Projects/App/iOS-Widget/Sources/TodayWhatWidget.swift (1)
18-21
: ์๋ก์ด ์ปจํธ๋กค ์์ ฏ ์ถ๊ฐ๊ฐ ์ ์ ํฉ๋๋ค.iOS 18.0 ์ด์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ก์ด ์ปจํธ๋กค ์์ ฏ๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ๊ฑด๋ถ๋ก ์ถ๊ฐ๋์์ต๋๋ค.
Projects/App/iOS-Widget/Sources/MealControlWidget/MealControlWidget.swift (1)
5-23
: ์ ๊ตฌํ๋ ์์ ฏ ๊ตฌ์กฐ์ ๋๋ค!SwiftUI์ WidgetKit์ ํ์ฉํ ๊น๋ํ ๊ตฌํ์ด ๋๋ณด์ ๋๋ค. iOS 18.0 ์ด์ ์ฒดํฌ๋ ์ ์ ํ ๋์ด์์ต๋๋ค.
Tuist/ProjectDescriptionHelpers/Action/Action+Template.swift (1)
25-39
: iOS์ macOS ์ค์ ๋ถ๋ฆฌ๊ฐ ์ ๋์์ต๋๋ค!ํ๋ซํผ๋ณ Firebase ์ค์ ๋ถ๋ฆฌ๊ฐ ๊น๋ํ๊ฒ ๊ตฌํ๋์์ต๋๋ค.
Tuist/ProjectDescriptionHelpers/Target/TargetSpec.swift (1)
42-42
: ๊ธฐ๋ณธ SwiftLint ์ค์ ์ด ์ ์ ํฉ๋๋ค.๋ชจ๋ ํ๊ฒ์ SwiftLint๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉํ๋ ๊ฒ์ ์ฝ๋ ํ์ง ์ ์ง์ ์ข์ ์ ๊ทผ์ ๋๋ค.
Tuist/ProjectDescriptionHelpers/Project/Project+makeModule.swift (1)
36-36
: ์ผ๊ด๋ ์คํฌ๋ฆฝํธ ์ค์ ์ด ์ ๋์์ต๋๋ค.
TargetSpec
์ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์ผ๊ด๋๊ฒ SwiftLint ์คํฌ๋ฆฝํธ ์ค์ ์ด ์ ์ฉ๋์์ต๋๋ค.Projects/App/Project.swift (4)
34-34
: ์ธํ ํธ ์์ค ์ถ๊ฐ ์น์ธControl Center ์์ ฏ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ Intents ๋๋ ํ ๋ฆฌ ์ถ๊ฐ๊ฐ ์ ์ ํ ์ด๋ฃจ์ด์ก์ต๋๋ค.
54-54
: ์์ ฏ ์ธํ ํธ ์์ค ์ถ๊ฐ ์น์ธ์์ ฏ ํ๊ฒ์๋ Intents ๋๋ ํ ๋ฆฌ๊ฐ ์ถ๊ฐ๋์ด ๋ฉ์ธ ํ๊ฒ๊ณผ ์ผ๊ด์ฑ์ด ์ ์ง๋์์ต๋๋ค.
104-104
: macOS ์ ์ฉ ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ ์น์ธmacOS ํ๊ฒฝ์ ํนํ๋ ์คํฌ๋ฆฝํธ ์ค์ ์ผ๋ก ๋ณ๊ฒฝ๋์ด ํ๋ซํผ๋ณ ์ฒ๋ฆฌ๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
24-24
: ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ ๋ณ๊ฒฝ ๊ฒ์ฆ ํ์์คํฌ๋ฆฝํธ๊ฐ SwiftLint๋ก๋ง ์ ํ๋์์ต๋๋ค. ์ด์ ์ ํฌํจ๋์ด ์๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ค์ด ์ ๊ฑฐ๋์ด๋ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธ์ด ํ์ํฉ๋๋ค.
โ Verification successful
์คํฌ๋ฆฝํธ ๊ตฌ์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์์ต๋๋ค
์ฝ๋๋ฒ ์ด์ค ๋ถ์ ๊ฒฐ๊ณผ,
.swiftLint
์คํฌ๋ฆฝํธ๋ง ํฌํจํ๋ ํ์ฌ ๊ตฌ์ฑ์ด ๊ธฐ๋ณธ ์ค์ ๊ณผ ์ผ์นํ๋ฉฐ ์์ ํฉ๋๋ค. ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ค(Firebase Crashlytics, Launch At Login ๋ฑ)์ ํ์ํ ๊ฒฝ์ฐ ํ๊ฒฝ ์ค์ ์ด๋ ํ๋ซํผ์ ๋ฐ๋ผ ๋ณ๋๋ก ์ถ๊ฐ๋๋๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.๐ Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: ์ด์ ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ ํ์ธ git log -p --full-history -- Projects/App/Project.swift | grep -A 5 "let scripts"Length of output: 0
Script:
#!/bin/bash # Find TargetScript enum definition and usages ast-grep --pattern 'enum TargetScript' rg -A 5 'TargetScript' --type swiftLength of output: 6463
.gitignore (1)
13-13
: QA ํ๊ฒฝ ์ค์ ํ์ผ ๋ฌด์ ์ค์ ์น์ธQA ํ๊ฒฝ์ Google ์๋น์ค ์ค์ ํ์ผ์ด ์ ์ ํ .gitignore์ ์ถ๊ฐ๋์์ต๋๋ค. ๋ฏผ๊ฐํ ์ค์ ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธํ๋ ๊ฒ์ ๋ณด์์ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ์ ๋๋ค.
๐ก ๊ฐ์
ControlCenter ์์ ฏ ์ถ๊ฐ
๐ ์์ ๋ด์ฉ
Custom ์ด๋ฏธ์ง๋ฅผ ๋ ธ์ถํ๊ธฐ๋ก ํ์์ผ๋ symbolset๋ฅผ ์ง์ํด์ผํ๊ธฐ๋๋ฌธ์ ์ฐ์ ์ ๊ธฐ๋ณธ SF Symbol๋ก ์ค์ ํ์ฌ
Summary by CodeRabbit
๋ฆด๋ฆฌ์ฆ ๋ ธํธ
์๋ก์ด ๊ธฐ๋ฅ
์์กด์ฑ ์ ๋ฐ์ดํธ
๊ธฐํ ๋ณ๊ฒฝ์ฌํญ