Skip to content

Commit 29cf7c7

Browse files
committed
feat: 생성 이벤트 및 Todo 완료 분석 연결
1 parent ba67ab6 commit 29cf7c7

5 files changed

Lines changed: 22 additions & 4 deletions

File tree

Application/DevLogPresentation/Sources/Home/Home/HomeViewCoordinator.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ final class HomeViewCoordinator {
4141
upsertTodoUseCase: container.resolve(UpsertTodoUseCase.self),
4242
fetchTodosUseCase: fetchTodosUseCase,
4343
fetchWebPagesUseCase: fetchWebPagesUseCase,
44-
networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self)
44+
networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self),
45+
trackAnalyticsEventUseCase: container.resolve(TrackAnalyticsEventUseCase.self)
4546
)
4647
}
4748

Application/DevLogPresentation/Sources/Home/Home/HomeViewModel.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ final class HomeViewModel: Store {
110110
private let fetchTodosUseCase: FetchTodosUseCase
111111
private let fetchWebPagesUseCase: FetchWebPagesUseCase
112112
private let networkConnectivityUseCase: ObserveNetworkConnectivityUseCase
113+
private let trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase
113114
private let loadingState = LoadingState()
114115
private var deletedWebPageURLString: String?
115116
private var cancellables = Set<AnyCancellable>()
@@ -123,7 +124,8 @@ final class HomeViewModel: Store {
123124
upsertTodoUseCase: UpsertTodoUseCase,
124125
fetchTodosUseCase: FetchTodosUseCase,
125126
fetchWebPagesUseCase: FetchWebPagesUseCase,
126-
networkConnectivityUseCase: ObserveNetworkConnectivityUseCase
127+
networkConnectivityUseCase: ObserveNetworkConnectivityUseCase,
128+
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase
127129
) {
128130
self.fetchPreferencesUseCase = fetchPreferencesUseCase
129131
self.updatePreferencesUseCase = updatePreferencesUseCase
@@ -134,6 +136,7 @@ final class HomeViewModel: Store {
134136
self.fetchTodosUseCase = fetchTodosUseCase
135137
self.fetchWebPagesUseCase = fetchWebPagesUseCase
136138
self.networkConnectivityUseCase = networkConnectivityUseCase
139+
self.trackAnalyticsEventUseCase = trackAnalyticsEventUseCase
137140

138141
setupNetworkObserving()
139142
}
@@ -186,6 +189,7 @@ final class HomeViewModel: Store {
186189
do {
187190
defer { endLoading(for: .overlay, mode: .delayed) }
188191
try await upsertTodoUseCase.execute(todo)
192+
trackAnalyticsEventUseCase.execute(.todoCreate)
189193
let page = try await fetchRecentTodos()
190194
let items = page.items
191195
.filter { $0.createdAt != $0.updatedAt }
@@ -217,6 +221,7 @@ final class HomeViewModel: Store {
217221
do {
218222
defer { endLoading(for: .overlay, mode: .delayed) }
219223
try await addWebPageUseCase.execute(urlString)
224+
trackAnalyticsEventUseCase.execute(.webPageCreate)
220225
let pages = try await fetchWebPagesUseCase.execute("")
221226
send(.updateWebPages(pages.map { WebPageItem(from: $0) }))
222227
} catch {

Application/DevLogPresentation/Sources/Home/TodoListViewModel.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ final class TodoListViewModel: Store {
8989
private let upsertTodoUseCase: UpsertTodoUseCase
9090
private let deleteTodoUseCase: DeleteTodoUseCase
9191
private let undoDeleteTodoUseCase: UndoDeleteTodoUseCase
92+
private let trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase
9293
private let loadingState = LoadingState()
9394
private var undoTodoId: String?
9495
private var nextCursor: TodoCursor?
@@ -101,13 +102,15 @@ final class TodoListViewModel: Store {
101102
upsertTodoUseCase: UpsertTodoUseCase,
102103
deleteTodoUseCase: DeleteTodoUseCase,
103104
undoDeleteTodoUseCase: UndoDeleteTodoUseCase,
105+
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase,
104106
category: TodoCategory
105107
) {
106108
self.fetchTodosUseCase = fetchTodosUseCase
107109
self.fetchTodoByIdUseCase = fetchTodoByIdUseCase
108110
self.upsertTodoUseCase = upsertTodoUseCase
109111
self.deleteTodoUseCase = deleteTodoUseCase
110112
self.undoDeleteTodoUseCase = undoDeleteTodoUseCase
113+
self.trackAnalyticsEventUseCase = trackAnalyticsEventUseCase
111114
self.category = category
112115
self.state = State(
113116
query: TodoQuery(categoryId: category.storageValue)
@@ -209,6 +212,7 @@ final class TodoListViewModel: Store {
209212
do {
210213
defer { endLoading(.delayed) }
211214
try await upsertTodoUseCase.execute(item)
215+
trackAnalyticsEventUseCase.execute(.todoCreate)
212216
send(.refresh)
213217
} catch {
214218
send(.setAlert(true))
@@ -225,6 +229,9 @@ final class TodoListViewModel: Store {
225229
todo.completedAt = todo.isCompleted ? now : nil
226230
todo.updatedAt = now
227231
try await upsertTodoUseCase.execute(todo)
232+
if todo.isCompleted {
233+
trackAnalyticsEventUseCase.execute(.todoComplete)
234+
}
228235
guard let todoListItem = TodoListItem(from: todo) else {
229236
send(.setAlert(true))
230237
return

Application/DevLogPresentation/Sources/Today/TodayViewCoordinator.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ final class TodayViewCoordinator {
2121
fetchTodoByIdUseCase: container.resolve(FetchTodoByIdUseCase.self),
2222
upsertTodoUseCase: container.resolve(UpsertTodoUseCase.self),
2323
fetchTodayDisplayOptionsUseCase: container.resolve(FetchTodayDisplayOptionsUseCase.self),
24-
updateTodayDisplayOptionsUseCase: container.resolve(UpdateTodayDisplayOptionsUseCase.self)
24+
updateTodayDisplayOptionsUseCase: container.resolve(UpdateTodayDisplayOptionsUseCase.self),
25+
trackAnalyticsEventUseCase: container.resolve(TrackAnalyticsEventUseCase.self)
2526
)
2627
}
2728

Application/DevLogPresentation/Sources/Today/TodayViewModel.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,22 @@ final class TodayViewModel: Store {
8383
private let fetchTodoByIdUseCase: FetchTodoByIdUseCase
8484
private let upsertTodoUseCase: UpsertTodoUseCase
8585
private let updateTodayDisplayOptionsUseCase: UpdateTodayDisplayOptionsUseCase
86+
private let trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase
8687
private let loadingState = LoadingState()
8788

8889
init(
8990
fetchTodosUseCase: FetchTodosUseCase,
9091
fetchTodoByIdUseCase: FetchTodoByIdUseCase,
9192
upsertTodoUseCase: UpsertTodoUseCase,
9293
fetchTodayDisplayOptionsUseCase: FetchTodayDisplayOptionsUseCase,
93-
updateTodayDisplayOptionsUseCase: UpdateTodayDisplayOptionsUseCase
94+
updateTodayDisplayOptionsUseCase: UpdateTodayDisplayOptionsUseCase,
95+
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase
9496
) {
9597
self.fetchTodosUseCase = fetchTodosUseCase
9698
self.fetchTodoByIdUseCase = fetchTodoByIdUseCase
9799
self.upsertTodoUseCase = upsertTodoUseCase
98100
self.updateTodayDisplayOptionsUseCase = updateTodayDisplayOptionsUseCase
101+
self.trackAnalyticsEventUseCase = trackAnalyticsEventUseCase
99102
self.state.displayOptions = fetchTodayDisplayOptionsUseCase.execute()
100103
}
101104

@@ -235,6 +238,7 @@ final class TodayViewModel: Store {
235238
todo.completedAt = now
236239
todo.updatedAt = now
237240
try await upsertTodoUseCase.execute(todo)
241+
trackAnalyticsEventUseCase.execute(.todoComplete)
238242
send(.removeTodo(todo.id))
239243
} catch {
240244
send(.setAlert(true))

0 commit comments

Comments
 (0)