Sync Server DONE!
This commit is contained in:
@@ -29,6 +29,9 @@ class ClimbingDataManager: ObservableObject {
|
||||
private let decoder = JSONDecoder()
|
||||
private var liveActivityObserver: NSObjectProtocol?
|
||||
|
||||
// Sync service for automatic syncing
|
||||
let syncService = SyncService()
|
||||
|
||||
private enum Keys {
|
||||
static let gyms = "openclimb_gyms"
|
||||
static let problems = "openclimb_problems"
|
||||
@@ -200,6 +203,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
func addGym(_ gym: Gym) {
|
||||
gyms.append(gym)
|
||||
saveGyms()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Gym added successfully"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -208,6 +212,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
if let index = gyms.firstIndex(where: { $0.id == gym.id }) {
|
||||
gyms[index] = gym
|
||||
saveGyms()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Gym updated successfully"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -229,6 +234,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
// Delete the gym
|
||||
gyms.removeAll { $0.id == gym.id }
|
||||
saveGyms()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Gym deleted successfully"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -240,14 +246,19 @@ class ClimbingDataManager: ObservableObject {
|
||||
func addProblem(_ problem: Problem) {
|
||||
problems.append(problem)
|
||||
saveProblems()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Problem added successfully"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
// Trigger auto-sync if enabled
|
||||
syncService.triggerAutoSync(dataManager: self)
|
||||
}
|
||||
|
||||
func updateProblem(_ problem: Problem) {
|
||||
if let index = problems.firstIndex(where: { $0.id == problem.id }) {
|
||||
problems[index] = problem
|
||||
saveProblems()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Problem updated successfully"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -264,6 +275,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
// Delete the problem
|
||||
problems.removeAll { $0.id == problem.id }
|
||||
saveProblems()
|
||||
DataStateManager.shared.updateDataState()
|
||||
}
|
||||
|
||||
func problem(withId id: UUID) -> Problem? {
|
||||
@@ -290,6 +302,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
|
||||
saveActiveSession()
|
||||
saveSessions()
|
||||
DataStateManager.shared.updateDataState()
|
||||
|
||||
successMessage = "Session started successfully"
|
||||
clearMessageAfterDelay()
|
||||
@@ -317,9 +330,13 @@ class ClimbingDataManager: ObservableObject {
|
||||
|
||||
saveActiveSession()
|
||||
saveSessions()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Session completed successfully"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
// Trigger auto-sync if enabled
|
||||
syncService.triggerAutoSync(dataManager: self)
|
||||
|
||||
// MARK: - End Live Activity after session ends
|
||||
Task {
|
||||
await LiveActivityManager.shared.endLiveActivity()
|
||||
@@ -337,6 +354,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
}
|
||||
|
||||
saveSessions()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Session updated successfully"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
@@ -359,6 +377,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
// Delete the session
|
||||
sessions.removeAll { $0.id == session.id }
|
||||
saveSessions()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Session deleted successfully"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -380,8 +399,12 @@ class ClimbingDataManager: ObservableObject {
|
||||
func addAttempt(_ attempt: Attempt) {
|
||||
attempts.append(attempt)
|
||||
saveAttempts()
|
||||
DataStateManager.shared.updateDataState()
|
||||
|
||||
successMessage = "Attempt logged successfully"
|
||||
|
||||
// Trigger auto-sync if enabled
|
||||
syncService.triggerAutoSync(dataManager: self)
|
||||
clearMessageAfterDelay()
|
||||
|
||||
// Update Live Activity when new attempt is added
|
||||
@@ -392,6 +415,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
if let index = attempts.firstIndex(where: { $0.id == attempt.id }) {
|
||||
attempts[index] = attempt
|
||||
saveAttempts()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Attempt updated successfully"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
@@ -403,6 +427,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
func deleteAttempt(_ attempt: Attempt) {
|
||||
attempts.removeAll { $0.id == attempt.id }
|
||||
saveAttempts()
|
||||
DataStateManager.shared.updateDataState()
|
||||
successMessage = "Attempt deleted successfully"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
@@ -464,6 +489,7 @@ class ClimbingDataManager: ObservableObject {
|
||||
userDefaults.removeObject(forKey: Keys.attempts)
|
||||
userDefaults.removeObject(forKey: Keys.activeSession)
|
||||
|
||||
DataStateManager.shared.reset()
|
||||
successMessage = "All data has been reset"
|
||||
clearMessageAfterDelay()
|
||||
}
|
||||
@@ -557,6 +583,9 @@ class ClimbingDataManager: ObservableObject {
|
||||
saveSessions()
|
||||
saveAttempts()
|
||||
|
||||
// Update data state to current time since we just imported new data
|
||||
DataStateManager.shared.updateDataState()
|
||||
|
||||
successMessage =
|
||||
"Data imported successfully with \(importResult.imagePathMapping.count) images"
|
||||
clearMessageAfterDelay()
|
||||
|
||||
Reference in New Issue
Block a user