Fix small sync

This commit is contained in:
2026-09-06 03:53:02 +02:00
parent 2d7f1b9c2d
commit 38128d12a0
@@ -4,6 +4,7 @@ import android.app.SearchManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.content.IntentFilter
import android.graphics.BitmapFactory
import android.net.Uri
@@ -407,6 +408,8 @@ class BillsListViewActivity :
lifecycleScope.launch {
withContext(Dispatchers.IO) {
db.deleteProject(projectId)
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.edit { remove(lastProjectSyncKey(projectId)) }
val dbProjects = db.projects
if (dbProjects.isNotEmpty()) setSelectedProject(dbProjects[0].id) else setSelectedProject(0)
}
@@ -794,18 +797,23 @@ class BillsListViewActivity :
db.cowspentServerSyncHelper.runAccountProjectsSync()
}
remoteProjects.count {
db.cowspentServerSyncHelper.scheduleSync(false, it, false) != null
val scheduled = db.cowspentServerSyncHelper.scheduleSync(false, it, false) != null
if (scheduled) markProjectSynced(preferences, it.id, now)
scheduled
}
} else {
val selectedProj = remoteProjects.find { it.id == selectedProjectId }
val lastSync = (selectedProj?.lastSyncedTimestamp ?: 0L) * 1000L
val lastSync = preferences.getLong(lastProjectSyncKey(selectedProjectId), 0L)
val due = trigger == SyncTrigger.MANUAL ||
now - lastSync > SELECTED_PROJECT_SYNC_INTERVAL_MS
if (selectedProj != null && due &&
db.cowspentServerSyncHelper.scheduleSync(
false, selectedProj, trigger == SyncTrigger.MANUAL
) != null
) 1 else 0
) {
markProjectSynced(preferences, selectedProj.id, now)
1
} else 0
}
// Only a task that actually started reports back through syncCallBack, so clear
@@ -814,6 +822,11 @@ class BillsListViewActivity :
}
}
private fun lastProjectSyncKey(projectId: Long) = "lastProjectSyncTimestamp_$projectId"
private fun markProjectSynced(preferences: SharedPreferences, projectId: Long, at: Long) {
preferences.edit { putLong(lastProjectSyncKey(projectId), at) }
}
private fun registerBroadcastReceiver() {
val filter = IntentFilter().apply {
addAction(MainConstants.BROADCAST_PROJECT_SYNC_FAILED)