sync_v2
Laurent 7 months ago
parent bee68f916f
commit c0ab6418d8
  1. 13
      PadelClub/Data/DataStore.swift
  2. 29
      PadelClub/Data/Tournament.swift
  3. 8
      PadelClub/Data/TournamentStore.swift
  4. 5
      PadelClub/Views/Navigation/Toolbox/DebugSettingsView.swift
  5. 106
      PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift

@ -15,17 +15,14 @@ class DataStore: ObservableObject {
@Published var user: CustomUser = CustomUser.placeHolder() {
didSet {
let loggedUser = StoreCenter.main.userId != nil
StoreCenter.main.collectionsCanSynchronize = loggedUser
let loggedUser = StoreCenter.main.isAuthenticated
if loggedUser {
if self.user.id != self.userStorage.item()?.id {
self.userStorage.setItemNoSync(self.user)
if StoreCenter.main.collectionsCanSynchronize {
StoreCenter.main.initialSynchronization()
self._fixMissingClubCreatorIfNecessary(self.clubs)
self._fixMissingEventCreatorIfNecessary(self.events)
}
StoreCenter.main.initialSynchronization(clear: false)
self._fixMissingClubCreatorIfNecessary(self.clubs)
self._fixMissingEventCreatorIfNecessary(self.events)
}
} else {
self._temporaryLocalUser.item = self.user
@ -224,8 +221,6 @@ class DataStore: ObservableObject {
fileprivate func _localDisconnect() {
StoreCenter.main.collectionsCanSynchronize = false
let tournamendIds: [String] = self.tournaments.map { $0.id }
TournamentLibrary.shared.reset()

@ -2406,17 +2406,24 @@ defer {
func insertOnServer() throws {
// DataStore.shared.tournaments.writeChangeAndInsertOnServer(instance: self)
//
// for teamRegistration in self.tournamentStore?.teamRegistrations {
// teamRegistration.insertOnServer()
// }
// for groupStage in self.tournamentStore?.groupStages {
// groupStage.insertOnServer()
// }
// for round in self.tournamentStore.rounds {
// round.insertOnServer()
// }
DataStore.shared.tournaments.writeChangeAndInsertOnServer(instance: self)
if let teamRegistrations = self.tournamentStore?.teamRegistrations {
for teamRegistration in teamRegistrations {
teamRegistration.insertOnServer()
}
}
if let groupStages = self.tournamentStore?.groupStages {
for groupStage in groupStages {
groupStage.insertOnServer()
}
}
if let rounds = self.tournamentStore?.rounds {
for round in rounds {
round.insertOnServer()
}
}
}

@ -36,16 +36,8 @@ class TournamentStore: ObservableObject {
fileprivate func _initialize() {
var synchronized: Bool = true
let indexed: Bool = true
#if DEBUG
if let sync = PListReader.readBool(plist: "local", key: "synchronized") {
synchronized = sync
}
#endif
StoreCenter.main.collectionsCanSynchronize = synchronized
self.groupStages = self.store.registerSynchronizedCollection(indexed: indexed)
self.rounds = self.store.registerSynchronizedCollection(indexed: indexed)
self.teamRegistrations = self.store.registerSynchronizedCollection(indexed: indexed)

@ -25,7 +25,6 @@ struct DebugSettingsView: View {
LabeledContent("Token", value: self._token)
LabeledContent("Server", value: self._apiURL)
LabeledContent("Synchronized", value: self._synchronized)
LabeledContent("CollectionsCanSynchronize", value: self._canSynchronize)
}
}
}
@ -55,10 +54,6 @@ struct DebugSettingsView: View {
}
}
fileprivate var _canSynchronize: String {
return "\(StoreCenter.main.collectionsCanSynchronize)"
}
fileprivate var _wsPingStatus: String {
return "\(StoreCenter.main.websocketPingStatus)"
}

@ -1048,59 +1048,59 @@ struct InscriptionManagerView: View {
}
}
@ViewBuilder
private func _prioritizeClubMembersButton() -> some View {
@Bindable var tournament = tournament
if let federalClub = tournament.club() {
Menu {
Picker(selection: $tournament.prioritizeClubMembers) {
Text("Oui").tag(true)
Text("Non").tag(false)
} label: {
}
.labelsHidden()
Divider()
NavigationLink {
ClubsView() { club in
if let event = tournament.eventObject() {
event.club = club.id
do {
try dataStore.events.addOrUpdate(instance: event)
} catch {
Logger.error(error)
}
}
_save()
}
} label: {
Text("Changer de club")
}
} label: {
Text("Membres prioritaires")
Text(federalClub.acronym)
}
Divider()
} else {
NavigationLink {
ClubsView() { club in
if let event = tournament.eventObject() {
event.club = club.id
do {
try dataStore.events.addOrUpdate(instance: event)
} catch {
Logger.error(error)
}
}
_save()
}
} label: {
Text("Identifier le club")
}
Divider()
}
}
// @ViewBuilder
// private func _prioritizeClubMembersButton() -> some View {
// @Bindable var tournament = tournament
// if let federalClub = tournament.club() {
// Menu {
// Picker(selection: $tournament.prioritizeClubMembers) {
// Text("Oui").tag(true)
// Text("Non").tag(false)
// } label: {
//
// }
// .labelsHidden()
//
// Divider()
// NavigationLink {
// ClubsView() { club in
// if let event = tournament.eventObject() {
// event.club = club.id
// do {
// try dataStore.events.addOrUpdate(instance: event)
// } catch {
// Logger.error(error)
// }
// }
// _save()
// }
// } label: {
// Text("Changer de club")
// }
// } label: {
// Text("Membres prioritaires")
// Text(federalClub.acronym)
// }
// Divider()
// } else {
// NavigationLink {
// ClubsView() { club in
// if let event = tournament.eventObject() {
// event.club = club.id
// do {
// try dataStore.events.addOrUpdate(instance: event)
// } catch {
// Logger.error(error)
// }
// }
// _save()
// }
// } label: {
// Text("Identifier le club")
// }
// Divider()
// }
// }
private func _teamFooterView(_ team: TeamRegistration) -> some View {
HStack {

Loading…
Cancel
Save