-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainView.swift
More file actions
81 lines (78 loc) · 3.61 KB
/
Copy pathMainView.swift
File metadata and controls
81 lines (78 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//
// MainView.swift
// DevLog
//
// Created by opfic on 5/8/25.
//
import SwiftUI
struct MainView: View {
@Environment(\.diContainer) var container: DIContainer
@State var viewModel: MainViewModel
var body: some View {
TabView {
HomeView(viewModel: HomeViewModel(
addWebPageUseCase: container.resolve(AddWebPageUseCase.self),
deleteWebPageUseCase: container.resolve(DeleteWebPageUseCase.self),
undoDeleteWebPageUseCase: container.resolve(UndoDeleteWebPageUseCase.self),
upsertTodoUseCase: container.resolve(UpsertTodoUseCase.self),
fetchTodosUseCase: container.resolve(FetchTodosUseCase.self),
fetchWebPagesUseCase: container.resolve(FetchWebPagesUseCase.self),
networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self)
))
.tabItem {
Image(systemName: "house.fill")
Text("홈")
}
TodayView(viewModel: TodayViewModel(
fetchTodosUseCase: container.resolve(FetchTodosUseCase.self),
fetchTodoByIdUseCase: container.resolve(FetchTodoByIdUseCase.self),
upsertTodoUseCase: container.resolve(UpsertTodoUseCase.self),
fetchTodayDisplayOptionsUseCase: container.resolve(FetchTodayDisplayOptionsUseCase.self),
updateTodayDisplayOptionsUseCase: container.resolve(UpdateTodayDisplayOptionsUseCase.self)
))
.tabItem {
Image(systemName: "sun.max.fill")
Text("오늘")
}
PushNotificationListView(viewModel: PushNotificationListViewModel(
fetchUseCase: container.resolve(FetchPushNotificationsUseCase.self),
deleteUseCase: container.resolve(DeletePushNotificationUseCase.self),
undoDeleteUseCase: container.resolve(UndoDeletePushNotificationUseCase.self),
toggleReadUseCase: container.resolve(TogglePushNotificationReadUseCase.self),
fetchQueryUseCase: container.resolve(FetchPushNotificationQueryUseCase.self),
updateQueryUseCase: container.resolve(UpdatePushNotificationQueryUseCase.self)
))
.tabItem {
Image(systemName: "bell.fill")
Text("알림")
}
.badge(viewModel.state.unreadPushCount)
ProfileView(viewModel: ProfileViewModel(
fetchUserDataUseCase: container.resolve(FetchUserDataUseCase.self),
fetchTodosUseCase: container.resolve(FetchTodosUseCase.self),
upsertStatusMessageUseCase: container.resolve(UpsertStatusMessageUseCase.self),
networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self),
fetchHeatmapActivityTypesUseCase: container.resolve(FetchProfileHeatmapActivityTypesUseCase.self),
updateHeatmapActivityTypesUseCase: container.resolve(UpdateProfileHeatmapActivityTypesUseCase.self)
))
.tabItem {
Image(systemName: "person.crop.circle.fill")
Text("프로필")
}
}
.onAppear {
viewModel.send(.onAppear)
}
.alert(
viewModel.state.alertTitle,
isPresented: Binding(
get: { viewModel.state.showAlert },
set: { viewModel.send(.setAlert($0)) }
)
) {
Button("확인", role: .cancel) { }
} message: {
Text(viewModel.state.alertMessage)
}
}
}