mirror of
https://github.com/writeas/writefreely-swiftui-multiplatform.git
synced 2024-11-15 01:11:02 +00:00
a51bbd3abc
* Initial work on presenting alert on error
* Move Account-related error handling up the hierarchy
* Handle errors on logout
* Fix for temporary debugging
* Clean up WriteFreelyModel’s published vars
* Add error handling to top-level content view
* Set current error on API call failures
* Set current error on API call handlers
* Move User Defaults errors to ErrorConstants file
* Add default values for some error strings
* Handle purging post errors
* Add FIXME to track silent failure on fetching collections
As collections are fetched and added to the `list` property in the CollectionListModel’s initializer, it’s tricky to throw an error here: we call it as a property initializer in CollectionListView, which cannot throw.
Consider refactoring this logic such that we’re using, for example, a @FetchRequest in CollectionListView instead.
* Handle errors in (most) shared code
Two outliers to come back to are:
- the LocalStoreManager, where we can’t set a current error in the WriteFreelyModel in methods that can’t throw
- the CollectionListModel, where the initializer can’t throw because we use it as a property initializer in CollectionListView
* Add error handling to Mac app
* Revert "Add error handling to Mac app"
This reverts commit b1a8b8b29c
.
33 lines
1007 B
Swift
33 lines
1007 B
Swift
import SwiftUI
|
|
import WriteFreely
|
|
|
|
struct AccountModel {
|
|
@AppStorage(WFDefaults.isLoggedIn, store: UserDefaults.shared) var isLoggedIn: Bool = false
|
|
private let defaults = UserDefaults.shared
|
|
|
|
var server: String = ""
|
|
var username: String = ""
|
|
|
|
private(set) var user: WFUser?
|
|
|
|
mutating func login(_ user: WFUser) {
|
|
self.user = user
|
|
self.username = user.username ?? ""
|
|
self.isLoggedIn = true
|
|
defaults.set(user.username, forKey: WFDefaults.usernameStringKey)
|
|
defaults.set(server, forKey: WFDefaults.serverStringKey)
|
|
}
|
|
|
|
mutating func logout() {
|
|
self.user = nil
|
|
self.isLoggedIn = false
|
|
defaults.removeObject(forKey: WFDefaults.usernameStringKey)
|
|
defaults.removeObject(forKey: WFDefaults.serverStringKey)
|
|
}
|
|
|
|
mutating func restoreState() {
|
|
server = defaults.string(forKey: WFDefaults.serverStringKey) ?? ""
|
|
username = defaults.string(forKey: WFDefaults.usernameStringKey) ?? ""
|
|
}
|
|
}
|