Skip to content

Commit 1417eab

Browse files
author
Achyut Kumar M
committed
add logs for debugging
1 parent c2707e9 commit 1417eab

File tree

1 file changed

+52
-35
lines changed

1 file changed

+52
-35
lines changed

GoInfoGame/GoInfoGame/data/DatasyncManager.swift

Lines changed: 52 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -58,50 +58,68 @@ class DatasyncManager {
5858
/// To fix the above error added @mainActor
5959
@MainActor
6060
func syncData() async throws -> Bool {
61-
62-
//Disabling temporarily. To be put back after incorporating syncing mechanism
63-
// if isSynching {
64-
// print("Already syncing")
65-
// return false
66-
// } else {
67-
// isSynching = true
68-
// }
61+
print("🔄 Starting sync...")
6962

7063
let changesets = dbInstance.getChangesets()
71-
print("Starting to sync data changesets: \(changesets.count)")
72-
64+
print("Found \(changesets.count) changesets for synced=false")
65+
66+
// Filter changesets that have valid edited versions
67+
let validChangesets = changesets.filter {
68+
let intId = Int($0.elementId) ?? -1
69+
switch $0.elementType {
70+
case .way:
71+
let exists = self.dbInstance.getWay(id: intId, version: .edited) != nil
72+
if !exists {
73+
print("⚠️ Edited way not found for ID: \(intId)")
74+
}
75+
return exists
76+
case .node:
77+
let exists = self.dbInstance.getNode(id: intId, version: .edited) != nil
78+
if !exists {
79+
print("⚠️ Edited node not found for ID: \(intId)")
80+
}
81+
return exists
82+
default:
83+
return false
84+
}
85+
}
86+
87+
print("📦 Found \(validChangesets.count) unsynced changesets with valid edits")
88+
7389
var nodesToSync: [String: StoredNode] = [:]
7490
var waysToSync: [String: StoredWay] = [:]
75-
76-
for changeset in changesets {
77-
print("changeset.elementType \(changeset.elementType), ID \(changeset.id) changeset.elementId \(changeset.elementId)")
78-
if changeset.elementType == .node, let node = dbInstance.getNode(id: Int(changeset.elementId) ?? -1, version: .edited) {
79-
nodesToSync[changeset.id] = node
80-
} else if changeset.elementType == .way, let way = dbInstance.getWay(id: Int(changeset.elementId) ?? -1, version: .edited) {
81-
waysToSync[changeset.id] = way
91+
92+
for cs in validChangesets {
93+
let intId = Int(cs.elementId) ?? -1
94+
if cs.elementType == .node,
95+
let node = dbInstance.getNode(id: intId, version: .edited) {
96+
nodesToSync[cs.id] = node
97+
} else if cs.elementType == .way,
98+
let way = dbInstance.getWay(id: intId, version: .edited) {
99+
waysToSync[cs.id] = way
82100
}
83101
}
84102

85103
var syncSuccess = true
86104

105+
if nodesToSync.isEmpty && waysToSync.isEmpty {
106+
print("✅ No edited elements found to sync")
107+
return true
108+
}
109+
87110
for (key, node) in nodesToSync {
88-
var payload = node.asOSMNode()
111+
print("📤 Syncing node ID: \(node.id)")
112+
let payload = node.asOSMNode()
89113
do {
90114
let isFinished = try await syncNode(node: payload)
91115
if isFinished {
92-
// ✅ Mark changeset as submitted
93116
DispatchQueue.main.async {
94117
self.dbInstance.assignChangesetId(obj: key, changesetId: 0)
95118
}
96-
97-
// 🔄 Fetch updated node from OSM
98-
let updatedNode = try await fetchNode2(nodeId: "\(payload.id)")
99-
// refreshOriginalNodeIfNewer(updatedNode)
100-
101-
print("✅ Sync finished for node: \(payload.id)")
119+
print("✅ Node sync finished: \(payload.id)")
102120
} else {
121+
print("❌ Node sync failed silently: \(payload.id)")
103122
syncSuccess = false
104-
return false
105123
}
106124
} catch {
107125
print("❌ Failed to sync node: \(error.localizedDescription)")
@@ -110,34 +128,33 @@ class DatasyncManager {
110128
}
111129
}
112130

113-
114131
for (key, way) in waysToSync {
115-
var payload = way.asOSMWay()
132+
print("📤 Syncing way ID: \(way.id)")
133+
let payload = way.asOSMWay()
116134
do {
117135
let isFinished = try await syncWay(way: payload)
118136
if isFinished {
119-
// Update changeset locally
120137
DispatchQueue.main.async {
121138
self.dbInstance.assignChangesetId(obj: key, changesetId: 0)
122139
}
123-
124-
let updatedWay = try await fetchway2(wayId: "\(payload.id)")
125-
//refreshOriginalWayIfNewer(updatedWay)
140+
print("✅ Way sync finished: \(payload.id)")
126141
} else {
142+
print("❌ Way sync failed silently: \(payload.id)")
127143
syncSuccess = false
128-
return false
129144
}
130145
} catch {
131-
print("Failed to sync way: \(error.localizedDescription)")
146+
print("Failed to sync way: \(error.localizedDescription)")
132147
syncSuccess = false
133148
throw error
134149
}
135150
}
136151

137-
isSynching = false
152+
print("Sync finished")
138153
return syncSuccess
139154
}
140155

156+
157+
141158
func refreshOriginalWayIfNewer(_ newWay: OSMWay) {
142159
guard let existing = DatabaseConnector.shared.getWay(id: newWay.id, version: .original) else {
143160
DatabaseConnector.shared.saveOSMElements([newWay])

0 commit comments

Comments
 (0)