-
Notifications
You must be signed in to change notification settings - Fork 0
Feature/#45 - 온보딩/잠금 네비게이션 라우팅 및 OnboardingStatusClient 구현 #52
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
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
1ca9b52
[#45] feat: SettingsRepository 인터페이스 및 OnboardingStatusUseCase 정의
dlguszoo be6abce
[#45] feat: UserDefaultsKey enum 및 SettingsRepositoryImpl 구현
dlguszoo 12c8394
[#45] feat: OnboardingStatusClient 정의 및 liveValue 조립
dlguszoo dc600b3
[#45] feat: OnboardingContainerFeature/View 구현 및 DVStepIndicator 이동
dlguszoo d3fb42a
[#45] feat: AppFeature 온보딩/잠금/메인 분기 라우팅 구현
dlguszoo e63450a
[#45] feat: OnboardingFeature iCloud sync 3초 타이머 연결
dlguszoo cd4c63d
[#45] feat: DevaultApp 윈도우 전체화면 및 타이틀바 숨김 설정
dlguszoo 755e9b8
[#45] refactor: 코드리뷰 반영 (필요없는 ignoresafearea 수정자 제거, 필요 주석 추가)
dlguszoo 75142ca
[#45] fix: 코드리뷰 반영
dlguszoo 471ad52
[#45] fix: 코드리뷰 반영
dlguszoo a977613
[#45] fix: lottie Presentation 모듈에 추가 및 isPostOnboarding 프리뷰단에서 제거
dlguszoo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
22 changes: 22 additions & 0 deletions
22
Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
| import DVDomain | ||
|
|
||
| // UserDefaults는 thread-safe하므로 @unchecked Sendable 허용 | ||
| public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { | ||
|
|
||
| private let defaults: UserDefaults | ||
|
|
||
| public init(defaults: UserDefaults = .standard) { | ||
| self.defaults = defaults | ||
| } | ||
|
|
||
| public func hasCompletedOnboarding() -> Bool { | ||
| defaults.bool(forKey: .hasCompletedOnboarding) | ||
| } | ||
|
|
||
| public func setOnboardingCompleted() { | ||
| defaults.set(true, forKey: .hasCompletedOnboarding) | ||
| } | ||
| } |
17 changes: 17 additions & 0 deletions
17
Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
|
|
||
| enum UserDefaultsKey: String { | ||
| case hasCompletedOnboarding | ||
| } | ||
|
|
||
| extension UserDefaults { | ||
| func bool(forKey key: UserDefaultsKey) -> Bool { | ||
| bool(forKey: key.rawValue) | ||
| } | ||
|
|
||
| func set(_ value: Bool, forKey key: UserDefaultsKey) { | ||
| set(value, forKey: key.rawValue) | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 8 additions & 0 deletions
8
Projects/DVDomain/Sources/Repository/Interface/SettingsRepository.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
|
|
||
| public protocol SettingsRepository: Sendable { | ||
| func hasCompletedOnboarding() -> Bool | ||
| func setOnboardingCompleted() | ||
| } |
20 changes: 20 additions & 0 deletions
20
Projects/DVDomain/Sources/UseCase/Impl/Settings/OnboardingStatusUseCaseImpl.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
|
|
||
| public struct OnboardingStatusUseCaseImpl: OnboardingStatusUseCase { | ||
|
|
||
| private let repository: any SettingsRepository | ||
|
|
||
| public init(repository: any SettingsRepository) { | ||
| self.repository = repository | ||
| } | ||
|
|
||
| public func hasCompleted() -> Bool { | ||
| repository.hasCompletedOnboarding() | ||
| } | ||
|
|
||
| public func setCompleted() { | ||
| repository.setOnboardingCompleted() | ||
| } | ||
| } |
8 changes: 8 additions & 0 deletions
8
Projects/DVDomain/Sources/UseCase/Interface/Settings/OnboardingStatusUseCase.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
|
|
||
| public protocol OnboardingStatusUseCase: Sendable { | ||
| func hasCompleted() -> Bool | ||
| func setCompleted() | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,6 +17,7 @@ let project = Project.project( | |
|
|
||
| // 3rd-party dependency | ||
| .tca(), | ||
| .lottie(), | ||
| ] | ||
| ), | ||
| .tests( | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
Projects/DVPresentation/Sources/Dependencies/OnboardingStatusClient.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| // Copyright © 2026 Devault. All rights reserved | ||
|
|
||
| import Foundation | ||
|
|
||
| import ComposableArchitecture | ||
|
|
||
| // MARK: - OnboardingStatusClient | ||
|
|
||
| @DependencyClient | ||
| public struct OnboardingStatusClient { | ||
| public var hasCompleted: @Sendable () -> Bool = { false } | ||
| public var setCompleted: @Sendable () -> Void | ||
| } | ||
|
|
||
| // MARK: - DependencyKey | ||
|
|
||
| extension OnboardingStatusClient: TestDependencyKey { | ||
| public static let testValue = OnboardingStatusClient() | ||
|
|
||
| public static let previewValue = OnboardingStatusClient( | ||
| hasCompleted: { false }, | ||
| setCompleted: { } | ||
| ) | ||
| } | ||
|
|
||
| // MARK: - DependencyValues | ||
|
|
||
| extension DependencyValues { | ||
| public var onboardingStatus: OnboardingStatusClient { | ||
| get { self[OnboardingStatusClient.self] } | ||
| set { self[OnboardingStatusClient.self] = newValue } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
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.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: DevaultProject/Devault-macOS
Length of output: 3662
🏁 Script executed:
Repository: DevaultProject/Devault-macOS
Length of output: 485
로컬라이즈 단위를 채워 주세요.
sourceLanguage가en인데 새 영문 키에는ko번역이 없고,목록을 불러오지 못했어요/시크릭이 없어요도en번역 없이 한국어가 소스 키로 남아 있습니다.Localizable.xcstrings가 앱 로케일용인지 확인하고, 지원 대상 로케일에는en/kostringUnit을 추가하거나 의도하지 않은 소스 언어 키는 제거해 주세요.🤖 Prompt for AI Agents
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.
client 구현과 함께 다음 이슈에서 처리할 예정
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.
@dlguszoo알겠습니다. 이번 PR 범위에서는 보류하고, 클라이언트 구현 이슈에서Localizable.xcstrings의en/kostringUnit과 소스 키 언어를 함께 정리하면 됩니다.원하시면 해당 후속 GitHub 이슈를 생성해 드릴까요?