Repair clubs and event without a creator

multistore
Laurent 2 years ago
parent 4253ba2c31
commit 841a742b0c
  1. 43
      PadelClub/Data/DataStore.swift
  2. 4
      PadelClub/Views/User/UserCreationView.swift

@ -11,7 +11,6 @@ import SwiftUI
class DataStore: ObservableObject { class DataStore: ObservableObject {
// fileprivate var _store: Store
static let shared = DataStore() static let shared = DataStore()
@Published var user: User = User.placeHolder() { @Published var user: User = User.placeHolder() {
@ -96,7 +95,6 @@ class DataStore: ObservableObject {
} }
func saveUser() { func saveUser() {
do { do {
if user.username.count > 0 { if user.username.count > 0 {
try self.userStorage.update() try self.userStorage.update()
@ -106,8 +104,6 @@ class DataStore: ObservableObject {
} catch { } catch {
Logger.error(error) Logger.error(error)
} }
} }
@objc func collectionDidLoad(notification: Notification) { @objc func collectionDidLoad(notification: Notification) {
@ -116,11 +112,36 @@ class DataStore: ObservableObject {
Logger.log("StoredObject<User> loaded with user = \(String(describing: userSingleton.item()))") Logger.log("StoredObject<User> loaded with user = \(String(describing: userSingleton.item()))")
self.user = userSingleton.item() ?? User.placeHolder() self.user = userSingleton.item() ?? User.placeHolder()
// if let user = object.item() { } else if let clubsCollection: StoredCollection<Club> = notification.object as? StoredCollection<Club> {
// self.user = user self._fixMissingClubCreatorIfNecessary(clubsCollection)
// } else { } else if let eventsCollection: StoredCollection<Event> = notification.object as? StoredCollection<Event> {
// self. self._fixMissingEventCreatorIfNecessary(eventsCollection)
// } }
}
fileprivate func _fixMissingClubCreatorIfNecessary(_ clubsCollection: StoredCollection<Club>) {
for club in clubsCollection {
if club.creator == nil && self.user.username.count > 0 {
club.creator = self.user.id
do {
try clubsCollection.addOrUpdate(instance: club)
} catch {
Logger.error(error)
}
}
}
}
fileprivate func _fixMissingEventCreatorIfNecessary(_ eventsCollection: StoredCollection<Event>) {
for event in eventsCollection {
if event.creator == nil && self.user.username.count > 0 {
event.creator = self.user.id
do {
try eventsCollection.addOrUpdate(instance: event)
} catch {
Logger.error(error)
}
}
} }
} }
@ -157,8 +178,4 @@ class DataStore: ObservableObject {
} }
fileprivate func _loadCollections() {
Store.main.loadCollectionFromServer()
}
} }

@ -124,10 +124,12 @@ struct UserCreationFormView: View {
let service = try Store.main.service() let service = try Store.main.service()
let user: User = try await service.createAccount(user: userCreationForm) let user: User = try await service.createAccount(user: userCreationForm)
DataStore.shared.user = user
DispatchQueue.main.async {
DataStore.shared.user = user
self.isLoading = false self.isLoading = false
self.showLoginScreen = true self.showLoginScreen = true
}
} catch { } catch {
self.isLoading = false self.isLoading = false

Loading…
Cancel
Save