Skip to content

Commit 45e9d6c

Browse files
committed
refactor: 옵셔널 주입 제거
1 parent 73416b5 commit 45e9d6c

8 files changed

Lines changed: 20 additions & 10 deletions

File tree

Application/DevLogPresentation/Sources/Home/Editor/TodoEditorFeature.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ extension DependencyValues {
230230
set { self[UpsertTodoUseCaseKey.self] = newValue }
231231
}
232232

233-
var trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase? {
233+
var trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase {
234234
get { self[TrackAnalyticsEventUseCaseKey.self] }
235235
set { self[TrackAnalyticsEventUseCaseKey.self] = newValue }
236236
}
@@ -257,7 +257,17 @@ private enum UpsertTodoUseCaseKey: DependencyKey {
257257
}
258258

259259
private enum TrackAnalyticsEventUseCaseKey: DependencyKey {
260-
static let liveValue: TrackAnalyticsEventUseCase? = nil
260+
static var liveValue: TrackAnalyticsEventUseCase {
261+
preconditionFailure("TrackAnalyticsEventUseCase must be provided.")
262+
}
263+
264+
static var testValue: TrackAnalyticsEventUseCase {
265+
NoOpTrackAnalyticsEventUseCase()
266+
}
267+
}
268+
269+
private struct NoOpTrackAnalyticsEventUseCase: TrackAnalyticsEventUseCase {
270+
func execute(_ event: AnalyticsEvent) { }
261271
}
262272

263273
private extension TodoEditorFeature {
@@ -294,7 +304,7 @@ private extension TodoEditorFeature {
294304
await send(.loading(.begin(target: .default, mode: .immediate)))
295305
do {
296306
try await upsertTodoUseCase.execute(draft)
297-
trackAnalyticsEventUseCase?.execute(.todoCreate)
307+
trackAnalyticsEventUseCase.execute(.todoCreate)
298308
await send(.createSucceeded)
299309
} catch {
300310
await send(.saveFailed)

Application/DevLogPresentation/Sources/Home/Home/HomeFeature+Effects.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ extension HomeFeature {
7373
await send(.loading(.begin(target: LoadingTarget.overlay.target, mode: .delayed)))
7474
do {
7575
try await addWebPageUseCase.execute(urlString)
76-
trackAnalyticsEventUseCase?.execute(.webPageCreate)
76+
trackAnalyticsEventUseCase.execute(.webPageCreate)
7777
let pages = try await fetchWebPagesUseCase.execute("")
7878
await send(.store(.updateWebPages(pages.map(WebPageItem.init(from:)))))
7979
} catch {

Application/DevLogPresentation/Sources/Home/List/TodoListFeature+Effects.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ extension TodoListFeature {
4444
todo.updatedAt = now
4545
try await upsertTodoUseCase.execute(todo)
4646
if todo.isCompleted {
47-
trackAnalyticsEventUseCase?.execute(.todoComplete)
47+
trackAnalyticsEventUseCase.execute(.todoComplete)
4848
}
4949
guard let todoListItem = TodoListItem(from: todo) else {
5050
await send(.store(.setAlert(true)))

Application/DevLogPresentation/Sources/Main/MainFeature.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private extension MainFeature {
119119

120120
func trackScreenViewEffect(_ screenName: String) -> Effect<Action> {
121121
.run { [trackAnalyticsEventUseCase] _ in
122-
trackAnalyticsEventUseCase?.execute(.screenView(screenName))
122+
trackAnalyticsEventUseCase.execute(.screenView(screenName))
123123
}
124124
}
125125

Application/DevLogPresentation/Sources/Root/RootFeature.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ private extension RootFeature {
183183

184184
func trackLoginScreenEffect() -> Effect<Action> {
185185
.run { [trackAnalyticsEventUseCase] _ in
186-
trackAnalyticsEventUseCase?.execute(.screenView("login"))
186+
trackAnalyticsEventUseCase.execute(.screenView("login"))
187187
}
188188
}
189189

Application/DevLogPresentation/Sources/Today/TodayFeature.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private extension TodayFeature {
308308
todo.completedAt = now
309309
todo.updatedAt = now
310310
try await upsertTodoUseCase.execute(todo)
311-
trackAnalyticsEventUseCase?.execute(.todoComplete)
311+
trackAnalyticsEventUseCase.execute(.todoComplete)
312312
await send(.store(.removeTodo(todo.id)))
313313
await send(.loading(.end(target: .default, mode: .delayed)))
314314
} catch {

Application/DevLogPresentation/Tests/Home/HomeFeatureTestSupport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct HomeStoreTestAdapter {
5555
fetchTodosUseCase: FetchTodosUseCase = FetchTodosUseCaseSpy(),
5656
fetchWebPagesUseCase: FetchWebPagesUseCase = FetchWebPagesUseCaseSpy(webPages: []),
5757
networkConnectivityUseCase: ObserveNetworkConnectivityUseCase = ObserveNetworkConnectivityUseCaseSpy(),
58-
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase? = HomeTrackAnalyticsEventUseCaseSpy(),
58+
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase = HomeTrackAnalyticsEventUseCaseSpy(),
5959
configureDependencies: ((inout DependencyValues) -> Void)? = nil
6060
) {
6161
let clock = TestClock()

Application/DevLogPresentation/Tests/Home/TodoEditorFeatureTestDoubles.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ final class TodoEditorStoreTestAdapter {
4141
fetchPreferencesUseCase: FetchTodoCategoryPreferencesUseCase = TodoEditorFetchPreferencesUseCaseSpy(),
4242
fetchReferenceItemsUseCase: FetchReferenceItemsUseCase = TodoEditorFetchReferenceItemsUseCaseSpy(),
4343
upsertTodoUseCase: UpsertTodoUseCase = TodoEditorUpsertTodoUseCaseSpy(),
44-
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase? = nil
44+
trackAnalyticsEventUseCase: TrackAnalyticsEventUseCase = TodoEditorTrackAnalyticsEventUseCaseSpy()
4545
) {
4646
self.now = now
4747
store = TestStore(

0 commit comments

Comments
 (0)