[iOS & Android] iOS 1.3.0 & Android 1.8.0
All checks were successful
OpenClimb Docker Deploy / build-and-push (push) Successful in 2m13s

This commit is contained in:
2025-10-09 21:00:12 -06:00
parent 603a683ab2
commit 6a39d23f28
15 changed files with 643 additions and 207 deletions

View File

@@ -401,31 +401,35 @@ class SyncService: ObservableObject {
let imagePathMapping = try await syncImagesFromServer(
backup: serverBackup, dataManager: dataManager)
// Merge data additively - never remove existing local data
// Merge deletion lists first to prevent resurrection of deleted items
let localDeletions = dataManager.getDeletedItems()
let allDeletions = localDeletions + serverBackup.deletedItems
let uniqueDeletions = Array(Set(allDeletions))
print("Merging gyms...")
let mergedGyms = mergeGyms(
local: dataManager.gyms,
server: serverBackup.gyms,
deletedItems: serverBackup.deletedItems)
deletedItems: uniqueDeletions)
print("Merging problems...")
let mergedProblems = try mergeProblems(
local: dataManager.problems,
server: serverBackup.problems,
imagePathMapping: imagePathMapping,
deletedItems: serverBackup.deletedItems)
deletedItems: uniqueDeletions)
print("Merging sessions...")
let mergedSessions = try mergeSessions(
local: dataManager.sessions,
server: serverBackup.sessions,
deletedItems: serverBackup.deletedItems)
deletedItems: uniqueDeletions)
print("Merging attempts...")
let mergedAttempts = try mergeAttempts(
local: dataManager.attempts,
server: serverBackup.attempts,
deletedItems: serverBackup.deletedItems)
deletedItems: uniqueDeletions)
// Update data manager with merged data
dataManager.gyms = mergedGyms
@@ -440,11 +444,6 @@ class SyncService: ObservableObject {
dataManager.saveAttempts()
dataManager.saveActiveSession()
// Merge deletion lists
let localDeletions = dataManager.getDeletedItems()
let allDeletions = localDeletions + serverBackup.deletedItems
let uniqueDeletions = Array(Set(allDeletions))
// Update local deletions with merged list
dataManager.clearDeletedItems()
if let data = try? JSONEncoder().encode(uniqueDeletions) {