From 8fbb40d453265248d2583643e2bae1bef1534d1d Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Mon, 29 Sep 2025 13:47:50 -0600 Subject: [PATCH] iOS 1.2.1 - Better auto sync and sync indicator --- .../UserInterfaceState.xcuserstate | Bin 124606 -> 127033 bytes ios/OpenClimb/Services/SyncService.swift | 186 ++---------------- .../ViewModels/ClimbingDataManager.swift | 67 +++++-- ios/OpenClimb/Views/AnalyticsView.swift | 21 ++ ios/OpenClimb/Views/GymsView.swift | 20 +- .../Views/LiveActivityDebugView.swift | 4 - ios/OpenClimb/Views/ProblemsView.swift | 20 +- ios/OpenClimb/Views/SessionsView.swift | 20 +- ios/OpenClimb/Views/SettingsView.swift | 22 +++ ios/SessionStatusLive/AppIntent.swift | 6 +- ios/SessionStatusLive/SessionStatusLive.swift | 4 - .../SessionStatusLiveBundle.swift | 6 +- .../SessionStatusLiveControl.swift | 9 +- .../SessionStatusLiveLiveActivity.swift | 4 - 14 files changed, 177 insertions(+), 212 deletions(-) diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 7fb5b300dda0de0183e6f123017578973ff51bfb..e38563c6eb9ddc972acf3d74ace860b2cb5e824f 100644 GIT binary patch literal 127033 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%0AQu28P^$nq7E#?9&=qhx;7mXPpeF$D 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 literal 124606 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�}3 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 SKNh?AfB*6S|M#H*5C0#I_{M?& diff --git a/ios/OpenClimb/Services/SyncService.swift b/ios/OpenClimb/Services/SyncService.swift index a88ccc4..d9648c7 100644 --- a/ios/OpenClimb/Services/SyncService.swift +++ b/ios/OpenClimb/Services/SyncService.swift @@ -1,6 +1,5 @@ import Combine import Foundation -import UIKit @MainActor class SyncService: ObservableObject { @@ -455,7 +454,7 @@ class SyncService: ObservableObject { let zipData = try createMinimalZipFromBackup(updatedBackup) // Use existing import method which properly handles data restoration - try dataManager.importData(from: zipData) + try dataManager.importData(from: zipData, showSuccessMessage: false) // Update local data state to match imported data timestamp DataStateManager.shared.setLastModified(backup.exportedAt) @@ -735,180 +734,29 @@ class SyncService: ObservableObject { } func triggerAutoSync(dataManager: ClimbingDataManager) { - guard isConnected && isConfigured && isAutoSyncEnabled else { return } + // Early exit if sync cannot proceed - don't set isSyncing + guard isConnected && isConfigured && isAutoSyncEnabled else { + // Ensure isSyncing is false when sync is not possible + if isSyncing { + isSyncing = false + } + return + } + + // Prevent multiple simultaneous syncs + guard !isSyncing else { + return + } Task { do { try await syncWithServer(dataManager: dataManager) } catch { - print("Auto-sync failed: \(error)") - // Don't show UI errors for auto-sync failures - } - } - } - - // DEPRECATED: Complex merge logic replaced with simple timestamp-based sync - // These methods are no longer used but kept for reference - @available(*, deprecated, message: "Use simple timestamp-based sync instead") - private func performIntelligentMerge(local: ClimbDataBackup, server: ClimbDataBackup) throws - -> ClimbDataBackup - { - print("Merging data - preserving all entities to prevent data loss") - - // Merge gyms by ID, keeping most recently updated - let mergedGyms = mergeGyms(local: local.gyms, server: server.gyms) - - // Merge problems by ID, keeping most recently updated - let mergedProblems = mergeProblems(local: local.problems, server: server.problems) - - // Merge sessions by ID, keeping most recently updated - let mergedSessions = mergeSessions(local: local.sessions, server: server.sessions) - - // Merge attempts by ID, keeping most recently updated - let mergedAttempts = mergeAttempts(local: local.attempts, server: server.attempts) - - print( - "Merge results: gyms=\(mergedGyms.count), problems=\(mergedProblems.count), sessions=\(mergedSessions.count), attempts=\(mergedAttempts.count)" - ) - - return ClimbDataBackup( - exportedAt: ISO8601DateFormatter().string(from: Date()), - version: "2.0", - formatVersion: "2.0", - gyms: mergedGyms, - problems: mergedProblems, - sessions: mergedSessions, - attempts: mergedAttempts - ) - } - - private func mergeGyms(local: [BackupGym], server: [BackupGym]) -> [BackupGym] { - var merged: [String: BackupGym] = [:] - - // Add all local gyms - for gym in local { - merged[gym.id] = gym - } - - // Add server gyms, replacing if newer - for serverGym in server { - if let localGym = merged[serverGym.id] { - // Keep the most recently updated - if isNewerThan(serverGym.updatedAt, localGym.updatedAt) { - merged[serverGym.id] = serverGym + await MainActor.run { + self.isSyncing = false } - } else { - // New gym from server - merged[serverGym.id] = serverGym } } - - return Array(merged.values) - } - - private func mergeProblems(local: [BackupProblem], server: [BackupProblem]) -> [BackupProblem] { - var merged: [String: BackupProblem] = [:] - - // Add all local problems - for problem in local { - merged[problem.id] = problem - } - - // Add server problems, replacing if newer or merging image paths - for serverProblem in server { - if let localProblem = merged[serverProblem.id] { - // Merge image paths from both sources - let localImages = Set(localProblem.imagePaths ?? []) - let serverImages = Set(serverProblem.imagePaths ?? []) - let mergedImages = Array(localImages.union(serverImages)) - - // Use most recently updated problem data but with merged images - let newerProblem = - isNewerThan(serverProblem.updatedAt, localProblem.updatedAt) - ? serverProblem : localProblem - merged[serverProblem.id] = BackupProblem( - id: newerProblem.id, - gymId: newerProblem.gymId, - name: newerProblem.name, - description: newerProblem.description, - climbType: newerProblem.climbType, - difficulty: newerProblem.difficulty, - tags: newerProblem.tags, - location: newerProblem.location, - imagePaths: mergedImages.isEmpty ? nil : mergedImages, - isActive: newerProblem.isActive, - dateSet: newerProblem.dateSet, - notes: newerProblem.notes, - createdAt: newerProblem.createdAt, - updatedAt: newerProblem.updatedAt - ) - } else { - // New problem from server - merged[serverProblem.id] = serverProblem - } - } - - return Array(merged.values) - } - - private func mergeSessions(local: [BackupClimbSession], server: [BackupClimbSession]) - -> [BackupClimbSession] - { - var merged: [String: BackupClimbSession] = [:] - - // Add all local sessions - for session in local { - merged[session.id] = session - } - - // Add server sessions, replacing if newer - for serverSession in server { - if let localSession = merged[serverSession.id] { - // Keep the most recently updated - if isNewerThan(serverSession.updatedAt, localSession.updatedAt) { - merged[serverSession.id] = serverSession - } - } else { - // New session from server - merged[serverSession.id] = serverSession - } - } - - return Array(merged.values) - } - - private func mergeAttempts(local: [BackupAttempt], server: [BackupAttempt]) -> [BackupAttempt] { - var merged: [String: BackupAttempt] = [:] - - // Add all local attempts - for attempt in local { - merged[attempt.id] = attempt - } - - // Add server attempts, replacing if newer - for serverAttempt in server { - if let localAttempt = merged[serverAttempt.id] { - // Keep the most recently created (attempts don't typically get updated) - if isNewerThan(serverAttempt.createdAt, localAttempt.createdAt) { - merged[serverAttempt.id] = serverAttempt - } - } else { - // New attempt from server - merged[serverAttempt.id] = serverAttempt - } - } - - return Array(merged.values) - } - - private func isNewerThan(_ dateString1: String, _ dateString2: String) -> Bool { - let formatter = ISO8601DateFormatter() - guard let date1 = formatter.date(from: dateString1), - let date2 = formatter.date(from: dateString2) - else { - return false - } - return date1 > date2 } func disconnect() { @@ -931,8 +779,6 @@ class SyncService: ObservableObject { } } -// Removed SyncTrigger enum - now using simple auto sync on any data change - enum SyncError: LocalizedError { case notConfigured case notConnected diff --git a/ios/OpenClimb/ViewModels/ClimbingDataManager.swift b/ios/OpenClimb/ViewModels/ClimbingDataManager.swift index 3cad61f..b90e595 100644 --- a/ios/OpenClimb/ViewModels/ClimbingDataManager.swift +++ b/ios/OpenClimb/ViewModels/ClimbingDataManager.swift @@ -32,6 +32,9 @@ class ClimbingDataManager: ObservableObject { // Sync service for automatic syncing let syncService = SyncService() + // Published property to propagate sync state changes + @Published var isSyncing = false + private enum Keys { static let gyms = "openclimb_gyms" static let problems = "openclimb_problems" @@ -67,6 +70,10 @@ class ClimbingDataManager: ObservableObject { migrateImagePaths() setupLiveActivityNotifications() + // Keep our published isSyncing in sync with syncService.isSyncing + syncService.$isSyncing + .assign(to: &$isSyncing) + Task { try? await Task.sleep(nanoseconds: 2_000_000_000) await performImageMaintenance() @@ -206,6 +213,9 @@ class ClimbingDataManager: ObservableObject { DataStateManager.shared.updateDataState() successMessage = "Gym added successfully" clearMessageAfterDelay() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func updateGym(_ gym: Gym) { @@ -215,6 +225,9 @@ class ClimbingDataManager: ObservableObject { DataStateManager.shared.updateDataState() successMessage = "Gym updated successfully" clearMessageAfterDelay() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } } @@ -237,6 +250,9 @@ class ClimbingDataManager: ObservableObject { DataStateManager.shared.updateDataState() successMessage = "Gym deleted successfully" clearMessageAfterDelay() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func gym(withId id: UUID) -> Gym? { @@ -261,6 +277,9 @@ class ClimbingDataManager: ObservableObject { DataStateManager.shared.updateDataState() successMessage = "Problem updated successfully" clearMessageAfterDelay() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } } @@ -276,6 +295,9 @@ class ClimbingDataManager: ObservableObject { problems.removeAll { $0.id == problem.id } saveProblems() DataStateManager.shared.updateDataState() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func problem(withId id: UUID) -> Problem? { @@ -291,7 +313,7 @@ class ClimbingDataManager: ObservableObject { } func startSession(gymId: UUID, notes: String? = nil) { - + // End any currently active session if let currentActive = activeSession { endSession(currentActive.id) } @@ -314,6 +336,9 @@ class ClimbingDataManager: ObservableObject { for: newSession, gymName: gym.name) } } + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func endSession(_ sessionId: UUID) { @@ -358,8 +383,11 @@ class ClimbingDataManager: ObservableObject { successMessage = "Session updated successfully" clearMessageAfterDelay() - // Update Live Activity when session updates + // Update Live Activity when session is updated updateLiveActivityForActiveSession() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } } @@ -368,7 +396,7 @@ class ClimbingDataManager: ObservableObject { attempts.removeAll { $0.sessionId == session.id } saveAttempts() - // Remove from active session if it's the current one + // If this is the active session, clear it if activeSession?.id == session.id { activeSession = nil saveActiveSession() @@ -380,6 +408,12 @@ class ClimbingDataManager: ObservableObject { DataStateManager.shared.updateDataState() successMessage = "Session deleted successfully" clearMessageAfterDelay() + + // Update Live Activity when session is deleted + updateLiveActivityForActiveSession() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func session(withId id: UUID) -> ClimbSession? { @@ -421,6 +455,9 @@ class ClimbingDataManager: ObservableObject { // Update Live Activity when attempt is updated updateLiveActivityForActiveSession() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } } @@ -433,6 +470,9 @@ class ClimbingDataManager: ObservableObject { // Update Live Activity when attempt is deleted updateLiveActivityForActiveSession() + + // Trigger auto-sync if enabled + syncService.triggerAutoSync(dataManager: self) } func attempts(forSession sessionId: UUID) -> [Attempt] { @@ -476,7 +516,7 @@ class ClimbingDataManager: ObservableObject { return gym(withId: mostUsedGymId) } - func resetAllData() { + func resetAllData(showSuccessMessage: Bool = true) { gyms.removeAll() problems.removeAll() sessions.removeAll() @@ -490,8 +530,11 @@ class ClimbingDataManager: ObservableObject { userDefaults.removeObject(forKey: Keys.activeSession) DataStateManager.shared.reset() - successMessage = "All data has been reset" - clearMessageAfterDelay() + + if showSuccessMessage { + successMessage = "All data has been reset" + clearMessageAfterDelay() + } } func exportData() -> Data? { @@ -530,7 +573,7 @@ class ClimbingDataManager: ObservableObject { } } - func importData(from data: Data) throws { + func importData(from data: Data, showSuccessMessage: Bool = true) throws { do { let importResult = try ZipUtils.extractImportZip(data: data) @@ -566,7 +609,7 @@ class ClimbingDataManager: ObservableObject { try validateImportData(importData) - resetAllData() + resetAllData(showSuccessMessage: showSuccessMessage) let updatedProblems = updateProblemImagePaths( problems: importData.problems, @@ -586,9 +629,11 @@ class ClimbingDataManager: ObservableObject { // 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() + if showSuccessMessage { + successMessage = + "Data imported successfully with \(importResult.imagePathMapping.count) images" + clearMessageAfterDelay() + } } catch { setError("Import failed: \(error.localizedDescription)") throw error diff --git a/ios/OpenClimb/Views/AnalyticsView.swift b/ios/OpenClimb/Views/AnalyticsView.swift index 4d4874b..fa1aac1 100644 --- a/ios/OpenClimb/Views/AnalyticsView.swift +++ b/ios/OpenClimb/Views/AnalyticsView.swift @@ -20,6 +20,27 @@ struct AnalyticsView: View { .padding() } .navigationTitle("Analytics") + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + if dataManager.isSyncing { + HStack(spacing: 2) { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .blue)) + .scaleEffect(0.6) + } + .padding(.horizontal, 6) + .padding(.vertical, 3) + .background( + Circle() + .fill(.regularMaterial) + ) + .transition(.scale.combined(with: .opacity)) + .animation( + .easeInOut(duration: 0.2), value: dataManager.isSyncing + ) + } + } + } } } } diff --git a/ios/OpenClimb/Views/GymsView.swift b/ios/OpenClimb/Views/GymsView.swift index 31c895a..3937ae5 100644 --- a/ios/OpenClimb/Views/GymsView.swift +++ b/ios/OpenClimb/Views/GymsView.swift @@ -15,7 +15,25 @@ struct GymsView: View { } .navigationTitle("Gyms") .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { + ToolbarItemGroup(placement: .navigationBarTrailing) { + if dataManager.isSyncing { + HStack(spacing: 2) { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .blue)) + .scaleEffect(0.6) + } + .padding(.horizontal, 6) + .padding(.vertical, 3) + .background( + Circle() + .fill(.regularMaterial) + ) + .transition(.scale.combined(with: .opacity)) + .animation( + .easeInOut(duration: 0.2), value: dataManager.isSyncing + ) + } + Button("Add") { showingAddGym = true } diff --git a/ios/OpenClimb/Views/LiveActivityDebugView.swift b/ios/OpenClimb/Views/LiveActivityDebugView.swift index 708aef5..5d75989 100644 --- a/ios/OpenClimb/Views/LiveActivityDebugView.swift +++ b/ios/OpenClimb/Views/LiveActivityDebugView.swift @@ -1,9 +1,5 @@ // // LiveActivityDebugView.swift -// OpenClimb -// -// Created by Assistant on 2025-09-15. -// import SwiftUI diff --git a/ios/OpenClimb/Views/ProblemsView.swift b/ios/OpenClimb/Views/ProblemsView.swift index da4bd6b..a4458f4 100644 --- a/ios/OpenClimb/Views/ProblemsView.swift +++ b/ios/OpenClimb/Views/ProblemsView.swift @@ -62,7 +62,25 @@ struct ProblemsView: View { .navigationTitle("Problems") .searchable(text: $searchText, prompt: "Search problems...") .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { + ToolbarItemGroup(placement: .navigationBarTrailing) { + if dataManager.isSyncing { + HStack(spacing: 2) { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .blue)) + .scaleEffect(0.6) + } + .padding(.horizontal, 6) + .padding(.vertical, 3) + .background( + Circle() + .fill(.regularMaterial) + ) + .transition(.scale.combined(with: .opacity)) + .animation( + .easeInOut(duration: 0.2), value: dataManager.isSyncing + ) + } + if !dataManager.gyms.isEmpty { Button("Add") { showingAddProblem = true diff --git a/ios/OpenClimb/Views/SessionsView.swift b/ios/OpenClimb/Views/SessionsView.swift index 0d759d3..898d458 100644 --- a/ios/OpenClimb/Views/SessionsView.swift +++ b/ios/OpenClimb/Views/SessionsView.swift @@ -17,7 +17,25 @@ struct SessionsView: View { .navigationTitle("Sessions") .navigationBarTitleDisplayMode(.automatic) .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { + ToolbarItemGroup(placement: .navigationBarTrailing) { + if dataManager.isSyncing { + HStack(spacing: 2) { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .blue)) + .scaleEffect(0.6) + } + .padding(.horizontal, 6) + .padding(.vertical, 3) + .background( + Circle() + .fill(.regularMaterial) + ) + .transition(.scale.combined(with: .opacity)) + .animation( + .easeInOut(duration: 0.2), value: dataManager.isSyncing + ) + } + if dataManager.gyms.isEmpty { EmptyView() } else if dataManager.activeSession == nil { diff --git a/ios/OpenClimb/Views/SettingsView.swift b/ios/OpenClimb/Views/SettingsView.swift index 56a2694..cd55dd4 100644 --- a/ios/OpenClimb/Views/SettingsView.swift +++ b/ios/OpenClimb/Views/SettingsView.swift @@ -22,6 +22,27 @@ struct SettingsView: View { AppInfoSection() } .navigationTitle("Settings") + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + if dataManager.isSyncing { + HStack(spacing: 2) { + ProgressView() + .progressViewStyle(CircularProgressViewStyle(tint: .blue)) + .scaleEffect(0.6) + } + .padding(.horizontal, 6) + .padding(.vertical, 3) + .background( + Circle() + .fill(.regularMaterial) + ) + .transition(.scale.combined(with: .opacity)) + .animation( + .easeInOut(duration: 0.2), value: dataManager.isSyncing + ) + } + } + } .sheet( item: Binding( get: { activeSheet }, @@ -436,6 +457,7 @@ struct SyncSection: View { .foregroundColor(.red) .padding(.leading, 24) } + } } .sheet(isPresented: $showingSyncSettings) { diff --git a/ios/SessionStatusLive/AppIntent.swift b/ios/SessionStatusLive/AppIntent.swift index 1efec63..1037e05 100644 --- a/ios/SessionStatusLive/AppIntent.swift +++ b/ios/SessionStatusLive/AppIntent.swift @@ -1,12 +1,8 @@ // // AppIntent.swift -// SessionStatusLive -// -// Created by Atridad Lahiji on 2025-09-15. -// -import WidgetKit import AppIntents +import WidgetKit struct ConfigurationAppIntent: WidgetConfigurationIntent { static var title: LocalizedStringResource { "Configuration" } diff --git a/ios/SessionStatusLive/SessionStatusLive.swift b/ios/SessionStatusLive/SessionStatusLive.swift index 28fc8b4..89bc119 100644 --- a/ios/SessionStatusLive/SessionStatusLive.swift +++ b/ios/SessionStatusLive/SessionStatusLive.swift @@ -1,9 +1,5 @@ // // SessionStatusLive.swift -// SessionStatusLive -// -// Created by Atridad Lahiji on 2025-09-15. -// import SwiftUI import WidgetKit diff --git a/ios/SessionStatusLive/SessionStatusLiveBundle.swift b/ios/SessionStatusLive/SessionStatusLiveBundle.swift index f632dd5..34e1bef 100644 --- a/ios/SessionStatusLive/SessionStatusLiveBundle.swift +++ b/ios/SessionStatusLive/SessionStatusLiveBundle.swift @@ -1,12 +1,8 @@ // // SessionStatusLiveBundle.swift -// SessionStatusLive -// -// Created by Atridad Lahiji on 2025-09-15. -// -import WidgetKit import SwiftUI +import WidgetKit @main struct SessionStatusLiveBundle: WidgetBundle { diff --git a/ios/SessionStatusLive/SessionStatusLiveControl.swift b/ios/SessionStatusLive/SessionStatusLiveControl.swift index cd7f525..70f5ae6 100644 --- a/ios/SessionStatusLive/SessionStatusLiveControl.swift +++ b/ios/SessionStatusLive/SessionStatusLiveControl.swift @@ -1,9 +1,5 @@ // // SessionStatusLiveControl.swift -// SessionStatusLive -// -// Created by Atridad Lahiji on 2025-09-15. -// import AppIntents import SwiftUI @@ -42,8 +38,9 @@ extension SessionStatusLiveControl { } func currentValue(configuration: TimerConfiguration) async throws -> Value { - let isRunning = true // Check if the timer is running - return SessionStatusLiveControl.Value(isRunning: isRunning, name: configuration.timerName) + let isRunning = true // Check if the timer is running + return SessionStatusLiveControl.Value( + isRunning: isRunning, name: configuration.timerName) } } } diff --git a/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift b/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift index 7daadc0..3725c0a 100644 --- a/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift +++ b/ios/SessionStatusLive/SessionStatusLiveLiveActivity.swift @@ -1,9 +1,5 @@ // // SessionStatusLiveLiveActivity.swift -// SessionStatusLive -// -// Created by Atridad Lahiji on 2025-09-15. -// import ActivityKit import SwiftUI