@@ -12,7 +12,7 @@ final class TodoDetailViewModel: Store {
1212 struct State : Equatable {
1313 var todo : Todo ?
1414 var selectedTodoId : TodoIdItem ?
15- var renderedContent : String = " "
15+ var referenceItems : [ Int : TodoReferenceItem ] = [ : ]
1616 var isLoading : Bool = false
1717 var showAlert : Bool = false
1818 var showEditor : Bool = false
@@ -28,7 +28,7 @@ final class TodoDetailViewModel: Store {
2828 case setShowInfo( Bool )
2929 case setSelectedTodoId( TodoIdItem ? )
3030 case setTodo( Todo )
31- case setRenderedContent ( String )
31+ case setReferenceItems ( [ Int : TodoReferenceItem ] )
3232 case setLoading( Bool )
3333 case upsertTodo( Todo )
3434 }
@@ -41,21 +41,21 @@ final class TodoDetailViewModel: Store {
4141
4242 private( set) var state : State = . init( )
4343 let showEditButton : Bool
44- private let fetchUseCase : FetchTodoByIdUseCase
45- private let fetchTodoIDsByNumbersUseCase : FetchTodoIDsByNumbersUseCase
44+ private let fetchTodoUseCase : FetchTodoByIdUseCase
45+ private let fetchReferenceItemsUseCase : FetchReferenceItemsUseCase
4646 private let upsertUseCase : UpsertTodoUseCase
4747 private let todoId : String
4848 private let loadingState = LoadingState ( )
4949
5050 init (
51- fetchUseCase : FetchTodoByIdUseCase ,
52- fetchTodoIDsByNumbersUseCase : FetchTodoIDsByNumbersUseCase ,
51+ fetchTodoUseCase : FetchTodoByIdUseCase ,
52+ fetchReferenceItemsUseCase : FetchReferenceItemsUseCase ,
5353 upsertUseCase: UpsertTodoUseCase ,
5454 todoId: String ,
5555 showEditButton: Bool = true
5656 ) {
57- self . fetchUseCase = fetchUseCase
58- self . fetchTodoIDsByNumbersUseCase = fetchTodoIDsByNumbersUseCase
57+ self . fetchTodoUseCase = fetchTodoUseCase
58+ self . fetchReferenceItemsUseCase = fetchReferenceItemsUseCase
5959 self . upsertUseCase = upsertUseCase
6060 self . todoId = todoId
6161 self . showEditButton = showEditButton
@@ -78,10 +78,10 @@ final class TodoDetailViewModel: Store {
7878 state. selectedTodoId = todoId
7979 case . setTodo( let todo) :
8080 state. todo = todo
81- state. renderedContent = todo . content
81+ state. referenceItems = [ : ]
8282 effects = [ . resolveMarkdown( todo. content) ]
83- case . setRenderedContent ( let content ) :
84- state. renderedContent = content
83+ case . setReferenceItems ( let items ) :
84+ state. referenceItems = items
8585 case . setLoading( let value) :
8686 state. isLoading = value
8787 case . upsertTodo( let todo) :
@@ -99,27 +99,26 @@ final class TodoDetailViewModel: Store {
9999 Task {
100100 do {
101101 defer { endLoading ( . immediate) }
102- let todo = try await fetchUseCase . execute ( todoId)
102+ let todo = try await fetchTodoUseCase . execute ( todoId)
103103 send ( . setTodo( todo) )
104104 } catch {
105105 send ( . setAlert( true ) )
106106 }
107107 }
108108 case . resolveMarkdown( let content) :
109109 Task {
110- var renderedContent = content
111110 let numbers = content. todoReferenceNumbers
111+ var referenceItems = [ Int: TodoReferenceItem] ( )
112112
113113 if !numbers. isEmpty {
114114 do {
115- let todoIDsByNumber = try await fetchTodoIDsByNumbersUseCase. execute ( numbers)
116- renderedContent = content. replacingTodoReferenceLines ( using: todoIDsByNumber)
115+ referenceItems = try await fetchReferenceItemsUseCase. execute ( numbers)
117116 } catch {
118- renderedContent = content
117+ referenceItems = [ : ]
119118 }
120119 }
121120
122- send ( . setRenderedContent ( renderedContent ) )
121+ send ( . setReferenceItems ( referenceItems ) )
123122 }
124123 case . upsertTodo( let todo) :
125124 beginLoading ( . delayed)
0 commit comments