[iOS & Android] iOS 1.2.4 & Android 1.7.3
This commit is contained in:
@@ -378,7 +378,6 @@ class SyncService: ObservableObject {
|
||||
print("Renamed local image: \(filename) -> \(consistentFilename)")
|
||||
|
||||
// Update problem's image path in memory for consistency
|
||||
// Note: This would require updating the problem in the data manager
|
||||
} catch {
|
||||
print("Failed to rename local image, using original: \(error)")
|
||||
}
|
||||
@@ -397,12 +396,24 @@ class SyncService: ObservableObject {
|
||||
|
||||
private func createBackupFromDataManager(_ dataManager: ClimbingDataManager) -> ClimbDataBackup
|
||||
{
|
||||
// Filter out active sessions and their attempts from sync
|
||||
let completedSessions = dataManager.sessions.filter { $0.status != .active }
|
||||
let activeSessionIds = Set(
|
||||
dataManager.sessions.filter { $0.status == .active }.map { $0.id })
|
||||
let completedAttempts = dataManager.attempts.filter {
|
||||
!activeSessionIds.contains($0.sessionId)
|
||||
}
|
||||
|
||||
print(
|
||||
"iOS SYNC: Excluding \(dataManager.sessions.count - completedSessions.count) active sessions and \(dataManager.attempts.count - completedAttempts.count) active session attempts from sync"
|
||||
)
|
||||
|
||||
return ClimbDataBackup(
|
||||
exportedAt: DataStateManager.shared.getLastModified(),
|
||||
gyms: dataManager.gyms.map { BackupGym(from: $0) },
|
||||
problems: dataManager.problems.map { BackupProblem(from: $0) },
|
||||
sessions: dataManager.sessions.map { BackupClimbSession(from: $0) },
|
||||
attempts: dataManager.attempts.map { BackupAttempt(from: $0) }
|
||||
sessions: completedSessions.map { BackupClimbSession(from: $0) },
|
||||
attempts: completedAttempts.map { BackupAttempt(from: $0) }
|
||||
)
|
||||
}
|
||||
|
||||
@@ -412,6 +423,17 @@ class SyncService: ObservableObject {
|
||||
) throws {
|
||||
do {
|
||||
|
||||
// Store active sessions and their attempts before import
|
||||
let activeSessions = dataManager.sessions.filter { $0.status == .active }
|
||||
let activeSessionIds = Set(activeSessions.map { $0.id })
|
||||
let activeAttempts = dataManager.attempts.filter {
|
||||
activeSessionIds.contains($0.sessionId)
|
||||
}
|
||||
|
||||
print(
|
||||
"iOS IMPORT: Preserving \(activeSessions.count) active sessions and \(activeAttempts.count) active attempts during import"
|
||||
)
|
||||
|
||||
// Update problem image paths to point to downloaded images
|
||||
let updatedBackup: ClimbDataBackup
|
||||
if !imagePathMapping.isEmpty {
|
||||
@@ -456,6 +478,24 @@ class SyncService: ObservableObject {
|
||||
// Use existing import method which properly handles data restoration
|
||||
try dataManager.importData(from: zipData, showSuccessMessage: false)
|
||||
|
||||
// Restore active sessions and their attempts after import
|
||||
for session in activeSessions {
|
||||
print("iOS IMPORT: Restoring active session: \(session.id)")
|
||||
dataManager.sessions.append(session)
|
||||
if session.id == dataManager.activeSession?.id {
|
||||
dataManager.activeSession = session
|
||||
}
|
||||
}
|
||||
|
||||
for attempt in activeAttempts {
|
||||
dataManager.attempts.append(attempt)
|
||||
}
|
||||
|
||||
// Save restored data
|
||||
dataManager.saveSessions()
|
||||
dataManager.saveAttempts()
|
||||
dataManager.saveActiveSession()
|
||||
|
||||
// Update local data state to match imported data timestamp
|
||||
DataStateManager.shared.setLastModified(backup.exportedAt)
|
||||
print("Data state synchronized to imported timestamp: \(backup.exportedAt)")
|
||||
|
||||
Reference in New Issue
Block a user