Merge pull request #178 from writeas/bugfix-mac-crash

Bugfix mac crash
This commit is contained in:
Angelo Stavrow 2021-02-11 10:34:02 -05:00 committed by GitHub
commit a4b0710281
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 13 deletions

View File

@ -24,6 +24,8 @@ final class WriteFreelyModel: ObservableObject {
@Published var isPresentingSettingsView: Bool = false
#endif
static var shared = WriteFreelyModel()
var loginErrorMessage: String?
// swiftlint:disable line_length

View File

@ -22,10 +22,6 @@ struct ContentView: View {
withAnimation {
// Un-set the currently selected post
self.model.selectedPost = nil
// Navigate to the Drafts list
self.model.showAllPosts = false
self.model.selectedCollection = nil
}
// Create the new-post managed object
let managedPost = model.editor.generateNewLocalPost(withFont: model.preferences.font)

View File

@ -32,7 +32,7 @@ struct PostEditorModel {
managedPost.title = ""
managedPost.body = ""
managedPost.status = PostStatus.local.rawValue
managedPost.collectionAlias = nil
managedPost.collectionAlias = WriteFreelyModel.shared.selectedCollection?.alias
switch appearance {
case 1:
managedPost.appearance = "sans"

View File

@ -22,7 +22,7 @@ struct CheckForDebugModifier {
}
struct WriteFreely_MultiPlatformApp: App {
@StateObject private var model = WriteFreelyModel()
@StateObject private var model = WriteFreelyModel.shared
#if os(macOS)
// swiftlint:disable:next weak_delegate
@ -132,10 +132,6 @@ struct WriteFreely_MultiPlatformApp: App {
withAnimation {
// Un-set the currently selected post
self.model.selectedPost = nil
// Navigate to the Drafts list
self.model.showAllPosts = false
self.model.selectedCollection = nil
}
// Create the new-post managed object
let managedPost = model.editor.generateNewLocalPost(withFont: model.preferences.font)

View File

@ -5,6 +5,9 @@ struct PostTextEditingView: View {
@Binding var updatingFromServer: Bool
@State private var appearance: PostAppearance = .serif
@State private var combinedText = ""
@State private var hasBeenEdited: Bool = false
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
ZStack(alignment: .topLeading) {
@ -54,10 +57,18 @@ struct PostTextEditingView: View {
self.combinedText = "# \(post.title)\n\n\(post.body)"
}
})
.onReceive(timer) { _ in
if !post.body.isEmpty && hasBeenEdited {
DispatchQueue.main.async {
LocalStorageManager().saveContext()
hasBeenEdited = false
}
}
}
}
private func onEditingChanged() {
// Add code here to take action when the user first starts typing.
hasBeenEdited = true
}
private func onTextChange(_ text: String) {
@ -70,10 +81,16 @@ struct PostTextEditingView: View {
if updatingFromServer {
self.updatingFromServer = false
}
hasBeenEdited = true
}
private func onCommit() {
// Add code here to take action when the user navigates away from the post.
if !post.body.isEmpty && hasBeenEdited {
DispatchQueue.main.async {
LocalStorageManager().saveContext()
}
}
hasBeenEdited = false
}
private func extractTitle(_ text: String) {
@ -95,5 +112,4 @@ struct PostTextEditingView: View {
self.post.body = text
}
}
}