Procházet zdrojové kódy

Add error handling to Mac app

pull/207/head
Angelo Stavrow před 1 rokem
rodič
revize
b1a8b8b29c
V databázi nebyl nalezen žádný známý klíč pro tento podpis ID GPG klíče: 1A49C7064E060EEE
5 změnil soubory, kde provedl 51 přidání a 2 odebrání
  1. +1
    -0
      Shared/WriteFreely_MultiPlatformApp.swift
  2. +11
    -0
      macOS/PostEditor/PostEditorView.swift
  3. +13
    -2
      macOS/Settings/MacAccountView.swift
  4. +13
    -0
      macOS/Settings/MacPreferencesView.swift
  5. +13
    -0
      macOS/Settings/MacUpdatesView.swift

+ 1
- 0
Shared/WriteFreely_MultiPlatformApp.swift Zobrazit soubor

@@ -115,6 +115,7 @@ struct WriteFreely_MultiPlatformApp: App {
}
.tag(2)
}
.withErrorHandling()
.frame(minWidth: 500, maxWidth: 500, minHeight: 200)
.padding()
// .preferredColorScheme(preferences.selectedColorScheme) // See PreferencesModel for info.


+ 11
- 0
macOS/PostEditor/PostEditorView.swift Zobrazit soubor

@@ -2,6 +2,7 @@ import SwiftUI

struct PostEditorView: View {
@EnvironmentObject var model: WriteFreelyModel
@EnvironmentObject var errorHandling: ErrorHandling

@ObservedObject var post: WFAPost
@State private var isHovering: Bool = false
@@ -38,6 +39,16 @@ struct PostEditorView: View {
LocalStorageManager.standard.saveContext()
}
})
.onChange(of: model.hasError) { value in
if value {
if let error = model.currentError {
self.errorHandling.handle(error: error)
} else {
self.errorHandling.handle(error: AppError.genericError())
}
model.hasError = false
}
}
.onDisappear(perform: {
DispatchQueue.main.async {
model.editor.clearLastDraft()


+ 13
- 2
macOS/Settings/MacAccountView.swift Zobrazit soubor

@@ -2,11 +2,22 @@ import SwiftUI

struct MacAccountView: View {
@EnvironmentObject var model: WriteFreelyModel
@EnvironmentObject var errorHandling: ErrorHandling

var body: some View {
Form {
AccountView()
Form {
AccountView()
}
.onChange(of: model.hasError) { value in
if value {
if let error = model.currentError {
self.errorHandling.handle(error: error)
} else {
self.errorHandling.handle(error: AppError.genericError())
}
model.hasError = false
}
}
}
}



+ 13
- 0
macOS/Settings/MacPreferencesView.swift Zobrazit soubor

@@ -1,6 +1,9 @@
import SwiftUI

struct MacPreferencesView: View {
@EnvironmentObject var model: WriteFreelyModel
@EnvironmentObject var errorHandling: ErrorHandling

@ObservedObject var preferences: PreferencesModel

var body: some View {
@@ -8,6 +11,16 @@ struct MacPreferencesView: View {
PreferencesView(preferences: preferences)
Spacer()
}
.onChange(of: model.hasError) { value in
if value {
if let error = model.currentError {
self.errorHandling.handle(error: error)
} else {
self.errorHandling.handle(error: AppError.genericError())
}
model.hasError = false
}
}
}
}



+ 13
- 0
macOS/Settings/MacUpdatesView.swift Zobrazit soubor

@@ -2,6 +2,9 @@ import SwiftUI
import Sparkle

struct MacUpdatesView: View {
@EnvironmentObject var model: WriteFreelyModel
@EnvironmentObject var errorHandling: ErrorHandling

@ObservedObject var updaterViewModel: MacUpdatesViewModel

@AppStorage(WFDefaults.automaticallyChecksForUpdates, store: UserDefaults.shared)
@@ -81,6 +84,16 @@ that can cause crashes and data loss.
.onChange(of: subscribeToBetaUpdates) { _ in
updaterViewModel.toggleAllowedChannels()
}
.onChange(of: model.hasError) { value in
if value {
if let error = model.currentError {
self.errorHandling.handle(error: error)
} else {
self.errorHandling.handle(error: AppError.genericError())
}
model.hasError = false
}
}
}
}



Načítá se…
Zrušit
Uložit