|
|
|
@ -72,8 +72,14 @@ final class Tournament : ModelObject, Storable { |
|
|
|
|
|
|
|
|
|
|
|
//local variable |
|
|
|
//local variable |
|
|
|
var refreshInProgress: Bool = false |
|
|
|
var refreshInProgress: Bool = false |
|
|
|
|
|
|
|
var lastTeamRefresh: Date? |
|
|
|
var refreshRanking: Bool = false |
|
|
|
var refreshRanking: Bool = false |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func shouldRefreshTeams() -> Bool { |
|
|
|
|
|
|
|
guard let lastTeamRefresh else { return true } |
|
|
|
|
|
|
|
return lastTeamRefresh.timeIntervalSinceNow < -60 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ObservationIgnored |
|
|
|
@ObservationIgnored |
|
|
|
var navigationPath: [Screen] = [] |
|
|
|
var navigationPath: [Screen] = [] |
|
|
|
|
|
|
|
|
|
|
|
@ -2621,7 +2627,7 @@ defer { |
|
|
|
|
|
|
|
|
|
|
|
// MARK: - Status |
|
|
|
// MARK: - Status |
|
|
|
|
|
|
|
|
|
|
|
func shouldTournamentBeOver() -> Bool { |
|
|
|
func shouldTournamentBeOver() async -> Bool { |
|
|
|
#if _DEBUGING_TIME //DEBUGING TIME |
|
|
|
#if _DEBUGING_TIME //DEBUGING TIME |
|
|
|
let start = Date() |
|
|
|
let start = Date() |
|
|
|
defer { |
|
|
|
defer { |
|
|
|
@ -2661,13 +2667,27 @@ defer { |
|
|
|
onlineTeams().isEmpty == false && hasEnded() == false && hasStarted() == false |
|
|
|
onlineTeams().isEmpty == false && hasEnded() == false && hasStarted() == false |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func refreshTeamList() async throws { |
|
|
|
func refreshTeamList() async { |
|
|
|
guard enableOnlineRegistration, refreshInProgress == false, hasEnded() == false else { return } |
|
|
|
guard StoreCenter.main.hasToken() else { return } |
|
|
|
|
|
|
|
guard shouldRefreshTeams(), refreshInProgress == false, enableOnlineRegistration, hasEnded() == false else { return } |
|
|
|
|
|
|
|
await MainActor.run { |
|
|
|
refreshInProgress = true |
|
|
|
refreshInProgress = true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
do { |
|
|
|
try await self.tournamentStore.playerRegistrations.loadDataFromServerIfAllowed(clear: true) |
|
|
|
try await self.tournamentStore.playerRegistrations.loadDataFromServerIfAllowed(clear: true) |
|
|
|
try await self.tournamentStore.teamScores.loadDataFromServerIfAllowed(clear: true) |
|
|
|
try await self.tournamentStore.teamScores.loadDataFromServerIfAllowed(clear: true) |
|
|
|
try await self.tournamentStore.teamRegistrations.loadDataFromServerIfAllowed(clear: true) |
|
|
|
try await self.tournamentStore.teamRegistrations.loadDataFromServerIfAllowed(clear: true) |
|
|
|
|
|
|
|
await MainActor.run { |
|
|
|
refreshInProgress = false |
|
|
|
refreshInProgress = false |
|
|
|
|
|
|
|
lastTeamRefresh = Date() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch { |
|
|
|
|
|
|
|
Logger.error(error) |
|
|
|
|
|
|
|
await MainActor.run { |
|
|
|
|
|
|
|
refreshInProgress = false |
|
|
|
|
|
|
|
lastTeamRefresh = Date() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// MARK: - |
|
|
|
// MARK: - |
|
|
|
|