Skip to content

Commit 8f132fb

Browse files
committed
feat: PushNotificationListViewCoordinator 구현
1 parent b726b05 commit 8f132fb

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//
2+
// PushNotificationListViewCoordinator.swift
3+
// DevLogPresentation
4+
//
5+
// Created by opfic on 5/29/26.
6+
//
7+
8+
import Foundation
9+
import DevLogCore
10+
import DevLogDomain
11+
12+
@MainActor
13+
@Observable
14+
final class PushNotificationListViewCoordinator {
15+
let viewModel: PushNotificationListViewModel
16+
var todoIdToPresent: TodoIdItem?
17+
private let diContainer: DIContainer
18+
@ObservationIgnored
19+
private var todoDetailViewModel: TodoDetailViewModel?
20+
21+
init(container: DIContainer) {
22+
self.diContainer = container
23+
self.viewModel = PushNotificationListViewModel(
24+
fetchUseCase: container.resolve(FetchPushNotificationsUseCase.self),
25+
deleteUseCase: container.resolve(DeletePushNotificationUseCase.self),
26+
undoDeleteUseCase: container.resolve(UndoDeletePushNotificationUseCase.self),
27+
toggleReadUseCase: container.resolve(TogglePushNotificationReadUseCase.self),
28+
fetchQueryUseCase: container.resolve(FetchPushNotificationQueryUseCase.self),
29+
updateQueryUseCase: container.resolve(UpdatePushNotificationQueryUseCase.self)
30+
)
31+
}
32+
33+
func fetchData() {
34+
viewModel.send(.fetchNotifications)
35+
}
36+
37+
func makeTodoDetailViewModel(todoId: String) -> TodoDetailViewModel {
38+
if let todoDetailViewModel,
39+
todoDetailViewModel.todoId == todoId,
40+
!todoDetailViewModel.showEditButton {
41+
return todoDetailViewModel
42+
}
43+
44+
let todoDetailViewModel = TodoDetailViewModel(
45+
fetchTodoUseCase: diContainer.resolve(FetchTodoByIdUseCase.self),
46+
fetchReferenceItemsUseCase: diContainer.resolve(FetchReferenceItemsUseCase.self),
47+
upsertUseCase: diContainer.resolve(UpsertTodoUseCase.self),
48+
todoId: todoId,
49+
showEditButton: false
50+
)
51+
self.todoDetailViewModel = todoDetailViewModel
52+
return todoDetailViewModel
53+
}
54+
}

0 commit comments

Comments
 (0)