Skip to content

Commit 9e3cc1f

Browse files
Merge pull request #120 from writeas/restore-launch-to-editor-functionality
Restore launch to editor functionality
2 parents 8f0d21c + 55473f6 commit 9e3cc1f

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

Shared/PostEditor/PostEditorModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ struct PostEditorModel {
2424
let coordinator = LocalStorageManager.persistentContainer.persistentStoreCoordinator
2525
guard let postManagedObjectID = coordinator.managedObjectID(forURIRepresentation: postURL) else { return nil }
2626
guard let post = LocalStorageManager.persistentContainer.viewContext.object(
27-
with: postManagedObjectID
27+
with: postManagedObjectID
2828
) as? WFAPost else { return nil }
2929

3030
return post

Shared/WriteFreely_MultiPlatformApp.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ struct WriteFreely_MultiPlatformApp: App {
1111
var body: some Scene {
1212
WindowGroup {
1313
ContentView()
14+
.onAppear(perform: {
15+
if let lastDraft = model.editor.fetchLastDraftFromUserDefaults() {
16+
self.model.selectedPost = lastDraft
17+
} else {
18+
createNewLocalPost()
19+
}
20+
})
1421
.environmentObject(model)
1522
.environment(\.managedObjectContext, LocalStorageManager.persistentContainer.viewContext)
1623
// .preferredColorScheme(preferences.selectedColorScheme) // See PreferencesModel for info.
@@ -39,4 +46,26 @@ struct WriteFreely_MultiPlatformApp: App {
3946
}
4047
#endif
4148
}
49+
50+
private func createNewLocalPost() {
51+
let managedPost = WFAPost(context: LocalStorageManager.persistentContainer.viewContext)
52+
managedPost.createdDate = Date()
53+
managedPost.title = ""
54+
managedPost.body = ""
55+
managedPost.status = PostStatus.local.rawValue
56+
managedPost.collectionAlias = nil
57+
switch model.preferences.font {
58+
case 1:
59+
managedPost.appearance = "sans"
60+
case 2:
61+
managedPost.appearance = "wrap"
62+
default:
63+
managedPost.appearance = "serif"
64+
}
65+
if let languageCode = Locale.current.languageCode {
66+
managedPost.language = languageCode
67+
managedPost.rtl = Locale.characterDirection(forLanguage: languageCode) == .rightToLeft
68+
}
69+
self.model.selectedPost = managedPost
70+
}
4271
}

iOS/PostEditor/PostEditorView.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,28 @@ struct PostEditorView: View {
136136
model.move(post: post, from: selectedCollection, to: newCollection)
137137
}
138138
})
139+
.onChange(of: post.status, perform: { value in
140+
if value != PostStatus.published.rawValue {
141+
self.model.editor.saveLastDraft(post)
142+
} else {
143+
self.model.editor.clearLastDraft()
144+
}
145+
DispatchQueue.main.async {
146+
LocalStorageManager().saveContext()
147+
}
148+
})
139149
.onAppear(perform: {
140150
self.selectedCollection = collections.first { $0.alias == post.collectionAlias }
141151
if post.status != PostStatus.published.rawValue {
142-
self.model.editor.saveLastDraft(post)
152+
DispatchQueue.main.async {
153+
self.model.editor.saveLastDraft(post)
154+
}
143155
} else {
144156
self.model.editor.clearLastDraft()
145157
}
146158
})
147159
.onDisappear(perform: {
160+
self.model.editor.clearLastDraft()
148161
if post.title.count == 0
149162
&& post.body.count == 0
150163
&& post.status == PostStatus.local.rawValue

0 commit comments

Comments
 (0)