From 841a742b0c101a45f758a142f310c27a8eca8cfb Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 16 May 2024 11:07:00 +0200 Subject: [PATCH] Repair clubs and event without a creator --- PadelClub/Data/DataStore.swift | 45 ++++++++++++++------- PadelClub/Views/User/UserCreationView.swift | 8 ++-- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/PadelClub/Data/DataStore.swift b/PadelClub/Data/DataStore.swift index 0e69fbb..a5927fb 100644 --- a/PadelClub/Data/DataStore.swift +++ b/PadelClub/Data/DataStore.swift @@ -11,7 +11,6 @@ import SwiftUI class DataStore: ObservableObject { -// fileprivate var _store: Store static let shared = DataStore() @Published var user: User = User.placeHolder() { @@ -96,7 +95,6 @@ class DataStore: ObservableObject { } func saveUser() { - do { if user.username.count > 0 { try self.userStorage.update() @@ -106,8 +104,6 @@ class DataStore: ObservableObject { } catch { Logger.error(error) } - - } @objc func collectionDidLoad(notification: Notification) { @@ -116,11 +112,36 @@ class DataStore: ObservableObject { Logger.log("StoredObject loaded with user = \(String(describing: userSingleton.item()))") self.user = userSingleton.item() ?? User.placeHolder() -// if let user = object.item() { -// self.user = user -// } else { -// self. -// } + } else if let clubsCollection: StoredCollection = notification.object as? StoredCollection { + self._fixMissingClubCreatorIfNecessary(clubsCollection) + } else if let eventsCollection: StoredCollection = notification.object as? StoredCollection { + self._fixMissingEventCreatorIfNecessary(eventsCollection) + } + } + + fileprivate func _fixMissingClubCreatorIfNecessary(_ clubsCollection: StoredCollection) { + 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) { + 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) + } + } } } @@ -154,11 +175,7 @@ class DataStore: ObservableObject { self.userStorage.reset() Guard.main.disconnect() - - } - - fileprivate func _loadCollections() { - Store.main.loadCollectionFromServer() + } } diff --git a/PadelClub/Views/User/UserCreationView.swift b/PadelClub/Views/User/UserCreationView.swift index 22eec00..8ef9398 100644 --- a/PadelClub/Views/User/UserCreationView.swift +++ b/PadelClub/Views/User/UserCreationView.swift @@ -124,10 +124,12 @@ struct UserCreationFormView: View { let service = try Store.main.service() let user: User = try await service.createAccount(user: userCreationForm) - DataStore.shared.user = user - self.isLoading = false - self.showLoginScreen = true + DispatchQueue.main.async { + DataStore.shared.user = user + self.isLoading = false + self.showLoginScreen = true + } } catch { self.isLoading = false