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.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences
import android.content.IntentFilter import android.content.IntentFilter
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.net.Uri import android.net.Uri
@@ -407,6 +408,8 @@ class BillsListViewActivity :
lifecycleScope.launch { lifecycleScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
db.deleteProject(projectId) db.deleteProject(projectId)
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.edit { remove(lastProjectSyncKey(projectId)) }
val dbProjects = db.projects val dbProjects = db.projects
if (dbProjects.isNotEmpty()) setSelectedProject(dbProjects[0].id) else setSelectedProject(0) if (dbProjects.isNotEmpty()) setSelectedProject(dbProjects[0].id) else setSelectedProject(0)
} }
@@ -794,18 +797,23 @@ class BillsListViewActivity :
db.cowspentServerSyncHelper.runAccountProjectsSync() db.cowspentServerSyncHelper.runAccountProjectsSync()
} }
remoteProjects.count { 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 { } else {
val selectedProj = remoteProjects.find { it.id == selectedProjectId } 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 || val due = trigger == SyncTrigger.MANUAL ||
now - lastSync > SELECTED_PROJECT_SYNC_INTERVAL_MS now - lastSync > SELECTED_PROJECT_SYNC_INTERVAL_MS
if (selectedProj != null && due && if (selectedProj != null && due &&
db.cowspentServerSyncHelper.scheduleSync( db.cowspentServerSyncHelper.scheduleSync(
false, selectedProj, trigger == SyncTrigger.MANUAL false, selectedProj, trigger == SyncTrigger.MANUAL
) != null ) != null
) 1 else 0 ) {
markProjectSynced(preferences, selectedProj.id, now)
1
} else 0
} }
// Only a task that actually started reports back through syncCallBack, so clear // 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() { private fun registerBroadcastReceiver() {
val filter = IntentFilter().apply { val filter = IntentFilter().apply {
addAction(MainConstants.BROADCAST_PROJECT_SYNC_FAILED) addAction(MainConstants.BROADCAST_PROJECT_SYNC_FAILED)