@@ -21,13 +21,10 @@ class PublishViewModel: ObservableObject, Identifiable {
2121 @Published
2222 var selectedJournalId : Int = 0 {
2323 didSet {
24- previousSelectedJournal = journals. first { $0. id == oldValue }
24+ previousSelectedJournal = store . journals. first { $0. id == oldValue }
2525 }
2626 }
2727
28- @Published
29- var journals = [ Journal] ( )
30-
3128 @Published
3229 var isFileBrowserOpen = false
3330
@@ -37,7 +34,7 @@ class PublishViewModel: ObservableObject, Identifiable {
3734 var disabled : Bool { networkActive || ( entry. isEmpty && file == nil ) }
3835 var wordCount : Int { entry. split { $0 == " " || $0. isNewline } . count }
3936
40- var selectedJournal : Journal ? { journals. first { $0. id == self . selectedJournalId } }
37+ var selectedJournal : Journal ? { store . journals. first { $0. id == self . selectedJournalId } }
4138 var previousSelectedJournal : Journal ?
4239
4340 init (
@@ -52,41 +49,6 @@ class PublishViewModel: ObservableObject, Identifiable {
5249 reset ( )
5350 }
5451
55- func fetchJournals( ) {
56- guard let token = store. token else { return }
57-
58- networkActive = true
59-
60- Futureland
61- . journals ( token: token)
62- . sink ( receiveCompletion: { completion in
63- switch completion {
64- case . finished:
65- break
66- case . failure( let error) :
67- print ( error)
68- }
69- self . networkActive = false
70- } , receiveValue: { journals in
71- print ( journals)
72- let sortedJournals = journals. sorted { ( a, b) -> Bool in
73- guard let lastEntryAtA = a. lastEntryAt else { return false }
74- guard let lastEntryAtB = b. lastEntryAt else { return true }
75- return lastEntryAtA > lastEntryAtB
76- }
77- self . journals = sortedJournals
78-
79- // Check if a journal is already selected
80- let selectedJournal = sortedJournals. first { $0. id == self . selectedJournalId }
81- if selectedJournal != nil { return }
82-
83- // Select first journal if none are selected
84- guard let journal = sortedJournals. first else { return }
85- self . selectedJournalId = journal. id
86- } )
87- . store ( in: & disposables)
88- }
89-
9052 func publish( ) {
9153 guard let token = store. token else { return }
9254
@@ -171,16 +133,10 @@ extension PublishViewModel {
171133 guard fileUrl. startAccessingSecurityScopedResource ( ) else { return }
172134
173135 // Get file data
174- guard let data = try ? Data ( contentsOf: fileUrl) else {
175- print ( " Unable to read data " )
176- return
177- }
136+ guard let data = try ? Data ( contentsOf: fileUrl) else { return }
178137
179138 // Get mime type
180- guard let mimeType = getMimeTypeFor ( fileUrl: fileUrl) else {
181- print ( " Unable to get mime type " )
182- return
183- }
139+ guard let mimeType = getMimeTypeFor ( fileUrl: fileUrl) else { return }
184140
185141 file = File ( name: fileUrl. lastPathComponent, data: data, mimeType: mimeType)
186142 fileUrl. stopAccessingSecurityScopedResource ( )
@@ -193,13 +149,9 @@ extension PublishViewModel {
193149// MARK: Entry template
194150extension PublishViewModel {
195151 func maybeSetEntryToTemplate( journalId id: Int ) {
196- if entry != previousSelectedJournal? . entryTemplate ?? " " {
197- return
198- }
152+ if entry != previousSelectedJournal? . entryTemplate ?? " " { return }
199153
200- guard let journal = journals. first ( where: { $0. id == id } ) else {
201- return
202- }
154+ guard let journal = store. journals. first ( where: { $0. id == id } ) else { return }
203155
204156 guard let template = journal. entryTemplate else {
205157 entry = " "
@@ -210,4 +162,14 @@ extension PublishViewModel {
210162 entry = template
211163 }
212164 }
165+
166+ func maybeSetSelectedJournalId( journals: [ Journal ] ) {
167+ // Check if a journal is already selected
168+ let selectedJournal = journals. first { $0. id == self . selectedJournalId }
169+ if selectedJournal != nil { return }
170+
171+ // Select first journal if none are selected
172+ guard let journal = journals. first else { return }
173+ self . selectedJournalId = journal. id
174+ }
213175}
0 commit comments