Skip to content

Commit 7fcc989

Browse files
committed
refactor: PushNotificationListViewCoordinator 적용
1 parent 9c03950 commit 7fcc989

2 files changed

Lines changed: 18 additions & 12 deletions

File tree

Application/DevLogPresentation/Sources/Main/MainView.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ struct MainView: View {
1414
@State private var coordinator: MainViewCoordinator
1515
@State private var homeViewCoordinator: HomeViewCoordinator
1616
@State private var todayViewCoordinator: TodayViewCoordinator
17+
@State private var pushNotificationListViewCoordinator: PushNotificationListViewCoordinator
1718
@State private var profileViewCoordinator: ProfileViewCoordinator
1819
@Binding var selectedTab: MainTab?
1920

@@ -24,6 +25,9 @@ struct MainView: View {
2425
self._coordinator = State(initialValue: MainViewCoordinator(container: container))
2526
self._homeViewCoordinator = State(initialValue: HomeViewCoordinator(container: container))
2627
self._todayViewCoordinator = State(initialValue: TodayViewCoordinator(container: container))
28+
self._pushNotificationListViewCoordinator = State(
29+
initialValue: PushNotificationListViewCoordinator(container: container)
30+
)
2731
self._profileViewCoordinator = State(initialValue: ProfileViewCoordinator(container: container))
2832
self._selectedTab = selectedTab
2933
}
@@ -49,6 +53,7 @@ struct MainView: View {
4953
} else if newValue == .today {
5054
todayViewCoordinator.fetchData()
5155
} else if newValue == .notification {
56+
pushNotificationListViewCoordinator.fetchData()
5257
} else if newValue == .profile {
5358
profileViewCoordinator.fetchData()
5459
}
@@ -125,11 +130,15 @@ struct MainView: View {
125130
mainSidebar
126131
} content: {
127132
PushNotificationListView(
133+
coordinator: pushNotificationListViewCoordinator,
128134
isCompactLayout: isCompactLayout
129135
)
130136
} detail: {
131137
Group {
138+
if let todoId = pushNotificationListViewCoordinator.todoIdToPresent?.id {
132139
TodoDetailView(
140+
viewModel: pushNotificationListViewCoordinator.makeTodoDetailViewModel(
141+
todoId: todoId
133142
)
134143
)
135144
.id(todoId)
@@ -319,6 +328,7 @@ struct MainView: View {
319328

320329
private var notificationView: some View {
321330
PushNotificationListView(
331+
coordinator: pushNotificationListViewCoordinator,
322332
isCompactLayout: isCompactLayout
323333
)
324334
}

Application/DevLogPresentation/Sources/PushNotification/PushNotificationListView.swift

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ import DevLogDomain
1111

1212
struct PushNotificationListView: View {
1313
@Environment(\.colorScheme) private var colorScheme
14-
@Environment(\.diContainer) private var container: DIContainer
1514
@ScaledMetric(relativeTo: .body) private var headerHeight = 41
1615
@ScaledMetric(relativeTo: .largeTitle) private var labelWidth = 34
17-
@State var viewModel: PushNotificationListViewModel
1816
@State private var headerOffset: CGFloat = 0
1917
@State private var isScrollTrackingEnabled = false
20-
@Binding var todoIdToPresent: TodoIdItem?
18+
let coordinator: PushNotificationListViewCoordinator
2119
let isCompactLayout: Bool
2220

21+
private var viewModel: PushNotificationListViewModel {
22+
coordinator.viewModel
23+
}
24+
2325
var body: some View {
2426
NavigationStack {
2527
notificationList
@@ -57,21 +59,15 @@ struct PushNotificationListView: View {
5759
.lineLimit(3)
5860
}
5961
.sheet(item: Binding(
60-
get: { isCompactLayout ? todoIdToPresent : nil },
62+
get: { isCompactLayout ? coordinator.todoIdToPresent : nil },
6163
set: { item in
6264
if item == nil {
6365
selectNotification(nil)
6466
}
6567
}
6668
)) { item in
6769
NavigationStack {
68-
TodoDetailView(viewModel: TodoDetailViewModel(
69-
fetchTodoUseCase: container.resolve(FetchTodoByIdUseCase.self),
70-
fetchReferenceItemsUseCase: container.resolve(FetchReferenceItemsUseCase.self),
71-
upsertUseCase: container.resolve(UpsertTodoUseCase.self),
72-
todoId: item.id,
73-
showEditButton: false
74-
))
70+
TodoDetailView(viewModel: coordinator.makeTodoDetailViewModel(todoId: item.id))
7571
.id(item.id)
7672
.toolbar {
7773
ToolbarLeadingButton {
@@ -388,6 +384,6 @@ struct PushNotificationListView: View {
388384

389385
private func selectNotification(_ notificationId: String?) {
390386
viewModel.send(.selectNotification(notificationId))
391-
todoIdToPresent = viewModel.state.selectedTodoId
387+
coordinator.todoIdToPresent = viewModel.state.selectedTodoId
392388
}
393389
}

0 commit comments

Comments
 (0)