File tree Expand file tree Collapse file tree
Domain/UseCase/Todo/Delete Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,6 +26,10 @@ final class DomainAssembler: Assembler {
2626 container. register ( UpsertTodoUseCase . self) {
2727 UpsertTodoUseCaseImpl ( container. resolve ( TodoRepository . self) )
2828 }
29+
30+ container. register ( DeleteTodoUseCase . self) {
31+ DeleteTodoUseCaseImpl ( container. resolve ( TodoRepository . self) )
32+ }
2933
3034 container. register ( AuthSessionUseCase . self) {
3135 AuthSessionUseCaseImpl ( container. resolve ( AuthSessionRepository . self) )
Original file line number Diff line number Diff line change 1+ //
2+ // DeleteTodoUseCase.swift
3+ // DevLog
4+ //
5+ // Created by 최윤진 on 2/12/26.
6+ //
7+
8+ protocol DeleteTodoUseCase {
9+ func execute( _ todoID: String ) async throws
10+ }
Original file line number Diff line number Diff line change 1+ //
2+ // DeleteTodoUseCaseImpl.swift
3+ // DevLog
4+ //
5+ // Created by 최윤진 on 2/12/26.
6+ //
7+
8+ final class DeleteTodoUseCaseImpl : DeleteTodoUseCase {
9+ private let repository : TodoRepository
10+
11+ init ( _ repository: TodoRepository ) {
12+ self . repository = repository
13+ }
14+
15+ func execute( _ todoID: String ) async throws {
16+ try await repository. deleteTodo ( todoID)
17+ }
18+ }
Original file line number Diff line number Diff line change @@ -57,15 +57,18 @@ final class TodoViewModel: Store {
5757
5858 private let fetchTodosByKindUseCase : FetchTodosByKindUseCase
5959 private let upsertTodoUseCase : UpsertTodoUseCase
60+ private let deleteTodoUseCase : DeleteTodoUseCase
6061 @Published private( set) var state : State
6162
6263 init (
6364 fetchTodosByKindUseCase: FetchTodosByKindUseCase ,
6465 upsertTodoUseCase: UpsertTodoUseCase ,
66+ deleteTodoUseCase: DeleteTodoUseCase ,
6567 kind: TodoKind
6668 ) {
6769 self . fetchTodosByKindUseCase = fetchTodosByKindUseCase
6870 self . upsertTodoUseCase = upsertTodoUseCase
71+ self . deleteTodoUseCase = deleteTodoUseCase
6972 self . state = State ( kind: kind)
7073 }
7174
@@ -144,7 +147,16 @@ final class TodoViewModel: Store {
144147 }
145148 }
146149 case . swipeTodo( let todo) :
147- break
150+ Task {
151+ do {
152+ defer { send ( . didLoading( false ) ) }
153+ send ( . didLoading( true ) )
154+ try await deleteTodoUseCase. execute ( todo. id)
155+ send ( . refresh)
156+ } catch {
157+ send ( . didShowAlert( error. localizedDescription) )
158+ }
159+ }
148160 }
149161 }
150162}
Original file line number Diff line number Diff line change @@ -123,6 +123,7 @@ struct HomeView: View {
123123 TodoView ( viewModel: TodoViewModel (
124124 fetchTodosByKindUseCase: container. resolve ( FetchTodosByKindUseCase . self) ,
125125 upsertTodoUseCase: container. resolve ( UpsertTodoUseCase . self) ,
126+ deleteTodoUseCase: container. resolve ( DeleteTodoUseCase . self) ,
126127 kind: todoKind
127128 ) )
128129 . environmentObject ( router)
You can’t perform that action at this time.
0 commit comments