Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions Projects/App/Sources/AppDIContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ final class AppDIContainer {
getCurrentLocationUseCase: any GetCurrentLocationUseCase
) -> any SettingsCoordinatorBuildable {
SettingsDIContainer(
getUserProfileUseCase: DefaultGetUserProfileUseCase(userRepository: userRepository),
userRepository: userRepository,
logoutUseCase: makeLogoutUseCase(),
withdrawUseCase: makeWithdrawUseCase(),
updateHomeAddressUseCase: DefaultUpdateHomeAddressUseCase(
Expand Down Expand Up @@ -276,15 +276,13 @@ final class AppDIContainer {
activityPort: liveActivityPort,
sessionStore: alarmSessionStore
),
// 세션 스트림은 소유자(Store)가 제공한다 — AlarmSyncService는 사건 채널만.
observeAlarmUseCase: DefaultObserveAlarmUseCase(events: alarmSessionStore),
observeAlarmChangeUseCase: DefaultObserveAlarmChangeUseCase(events: alarmChangePresenter),
// 세션 스트림은 소유자(Store)가, 변경 사건은 Presenter가 제공한다.
alarmSyncEvents: alarmSessionStore,
alarmChangeEvents: alarmChangePresenter,
// 홈 pull-to-refresh(Phase 16) — 4번째 트리거도 같은 동기화 한 곳으로 합류한다.
requestAlarmSyncUseCase: DefaultRequestAlarmSyncUseCase(requesting: alarmSyncService),
alarmSyncRequesting: alarmSyncService,
// 재실행 카드 복원(Phase 14) — 기존 미사용 자산(detail 엔드포인트) 재활용.
getLastRouteDetailUseCase: DefaultGetLastRouteDetailUseCase(
repository: lastRouteRepository
),
lastRouteRepository: lastRouteRepository,
// 원탭 칩(Phase 18) — 검색 화면과 같은 인스턴스 공유(위 주석 참조).
searchLastRoutesUseCase: searchLastRoutes,
recentSearchesUseCase: recentSearches,
Expand Down
17 changes: 0 additions & 17 deletions Projects/Domain/Sources/UseCases/GetLastRouteDetailUseCase.swift

This file was deleted.

15 changes: 0 additions & 15 deletions Projects/Domain/Sources/UseCases/GetUserProfileUseCase.swift

This file was deleted.

17 changes: 0 additions & 17 deletions Projects/Domain/Sources/UseCases/ObserveAlarmChangeUseCase.swift

This file was deleted.

17 changes: 0 additions & 17 deletions Projects/Domain/Sources/UseCases/ObserveAlarmUseCase.swift

This file was deleted.

20 changes: 0 additions & 20 deletions Projects/Domain/Sources/UseCases/RequestAlarmSyncUseCase.swift

This file was deleted.

15 changes: 0 additions & 15 deletions Projects/Domain/Sources/UseCases/UpdateAlertFrequencyUseCase.swift

This file was deleted.

27 changes: 15 additions & 12 deletions Projects/Feature/Home/Example/ExampleApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate {
reverseGeocodeUseCase: PreviewReverseGeocodeUseCase(),
registerAlarmUseCase: PreviewRegisterAlarmUseCase(),
cancelAlarmUseCase: PreviewCancelAlarmUseCase(),
observeAlarmUseCase: PreviewObserveAlarmUseCase(),
observeAlarmChangeUseCase: PreviewObserveAlarmChangeUseCase(),
requestAlarmSyncUseCase: PreviewRequestAlarmSyncUseCase(),
getLastRouteDetailUseCase: PreviewGetLastRouteDetailUseCase(),
alarmSyncEvents: PreviewAlarmSyncEvents(),
alarmChangeEvents: PreviewAlarmChangeEvents(),
alarmSyncRequesting: PreviewAlarmSyncRequesting(),
lastRouteRepository: PreviewLastRouteRepository(),
searchLastRoutesUseCase: PreviewSearchLastRoutesUseCase(),
recentSearchesUseCase: PreviewRecentSearchesUseCase(),
searchCoordinatorBuildable: PreviewSearchCoordinatorBuildable()
Expand Down Expand Up @@ -89,33 +89,36 @@ struct PreviewCancelAlarmUseCase: CancelAlarmUseCase {
}

/// 등록된 알람이 없는 서버 상태를 흉내 낸다 — 동기화 이벤트가 오지 않으므로 화면을 건드리지 않는다.
struct PreviewObserveAlarmUseCase: ObserveAlarmUseCase {
func execute() -> AsyncStream<AlarmSyncUpdate> {
struct PreviewAlarmSyncEvents: AlarmSyncEvents {
func updates() -> AsyncStream<AlarmSyncUpdate> {
AsyncStream { _ in }
}
}

/// 수동 갱신(pull-to-refresh) 스텁 — 잠깐 도는 스피너만 흉내 낸다(결과 스트림 없음).
struct PreviewRequestAlarmSyncUseCase: RequestAlarmSyncUseCase {
func execute() async {
struct PreviewAlarmSyncRequesting: AlarmSyncRequesting {
func syncNow() async {
try? await Task.sleep(for: .milliseconds(600))
}
}

/// 막차 변경 판정이 없는 상태를 흉내 낸다 — 토스트·배너 강조는 발생하지 않는다.
struct PreviewObserveAlarmChangeUseCase: ObserveAlarmChangeUseCase {
func execute() -> AsyncStream<AlarmChangeVerdict> {
struct PreviewAlarmChangeEvents: AlarmChangeEvents {
func changes() -> AsyncStream<AlarmChangeVerdict> {
AsyncStream { _ in }
}
}

/// 재실행 카드 복원 경로 스텁 — 동기화 이벤트가 없어 호출되지 않지만, 호출돼도
/// canned 경로를 돌려줘 플로우가 성립한다.
struct PreviewGetLastRouteDetailUseCase: GetLastRouteDetailUseCase {
func execute(routeId: String) async throws -> LastRoute {
struct PreviewLastRouteRepository: LastRouteRepository {
func lastRoute(id: String) async throws -> LastRoute {
try? await Task.sleep(for: .milliseconds(300))
return PreviewSearchCoordinator.makeCannedRoute()
}

// 홈 프리뷰는 상세 조회만 쓴다.
func searchLastRoutes(start: Coordinate, end: Coordinate) async throws -> [LastRoute] { [] }
}

/// 원탭 칩 재검색 스텁(Phase 18) — canned 경로 1건을 돌려줘 칩 탭 → 카드 시연이 성립한다.
Expand Down
32 changes: 16 additions & 16 deletions Projects/Feature/Home/Sources/HomeDIContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ public final class HomeDIContainer: HomeCoordinatorBuildable {
private let reverseGeocodeUseCase: any ReverseGeocodeUseCase
private let registerAlarmUseCase: any RegisterAlarmUseCase
private let cancelAlarmUseCase: any CancelAlarmUseCase
private let observeAlarmUseCase: any ObserveAlarmUseCase
private let observeAlarmChangeUseCase: any ObserveAlarmChangeUseCase
private let requestAlarmSyncUseCase: any RequestAlarmSyncUseCase
private let getLastRouteDetailUseCase: any GetLastRouteDetailUseCase
private let alarmSyncEvents: any AlarmSyncEvents
private let alarmChangeEvents: any AlarmChangeEvents
private let alarmSyncRequesting: any AlarmSyncRequesting
private let lastRouteRepository: any LastRouteRepository
private let searchLastRoutesUseCase: any SearchLastRoutesUseCase
private let recentSearchesUseCase: any RecentSearchesUseCase
private let searchCoordinatorBuildable: any SearchCoordinatorBuildable
Expand All @@ -28,10 +28,10 @@ public final class HomeDIContainer: HomeCoordinatorBuildable {
reverseGeocodeUseCase: any ReverseGeocodeUseCase,
registerAlarmUseCase: any RegisterAlarmUseCase,
cancelAlarmUseCase: any CancelAlarmUseCase,
observeAlarmUseCase: any ObserveAlarmUseCase,
observeAlarmChangeUseCase: any ObserveAlarmChangeUseCase,
requestAlarmSyncUseCase: any RequestAlarmSyncUseCase,
getLastRouteDetailUseCase: any GetLastRouteDetailUseCase,
alarmSyncEvents: any AlarmSyncEvents,
alarmChangeEvents: any AlarmChangeEvents,
alarmSyncRequesting: any AlarmSyncRequesting,
lastRouteRepository: any LastRouteRepository,
searchLastRoutesUseCase: any SearchLastRoutesUseCase,
recentSearchesUseCase: any RecentSearchesUseCase,
searchCoordinatorBuildable: any SearchCoordinatorBuildable,
Expand All @@ -41,10 +41,10 @@ public final class HomeDIContainer: HomeCoordinatorBuildable {
self.reverseGeocodeUseCase = reverseGeocodeUseCase
self.registerAlarmUseCase = registerAlarmUseCase
self.cancelAlarmUseCase = cancelAlarmUseCase
self.observeAlarmUseCase = observeAlarmUseCase
self.observeAlarmChangeUseCase = observeAlarmChangeUseCase
self.requestAlarmSyncUseCase = requestAlarmSyncUseCase
self.getLastRouteDetailUseCase = getLastRouteDetailUseCase
self.alarmSyncEvents = alarmSyncEvents
self.alarmChangeEvents = alarmChangeEvents
self.alarmSyncRequesting = alarmSyncRequesting
self.lastRouteRepository = lastRouteRepository
self.searchLastRoutesUseCase = searchLastRoutesUseCase
self.recentSearchesUseCase = recentSearchesUseCase
self.searchCoordinatorBuildable = searchCoordinatorBuildable
Expand All @@ -67,10 +67,10 @@ public final class HomeDIContainer: HomeCoordinatorBuildable {
reverseGeocodeUseCase: reverseGeocodeUseCase,
registerAlarmUseCase: registerAlarmUseCase,
cancelAlarmUseCase: cancelAlarmUseCase,
observeAlarmUseCase: observeAlarmUseCase,
observeAlarmChangeUseCase: observeAlarmChangeUseCase,
requestAlarmSyncUseCase: requestAlarmSyncUseCase,
getLastRouteDetailUseCase: getLastRouteDetailUseCase,
alarmSyncEvents: alarmSyncEvents,
alarmChangeEvents: alarmChangeEvents,
alarmSyncRequesting: alarmSyncRequesting,
lastRouteRepository: lastRouteRepository,
searchLastRoutesUseCase: searchLastRoutesUseCase,
recentSearchesUseCase: recentSearchesUseCase
)
Expand Down
Loading
Loading