Sync improvements

This commit is contained in:
2026-09-03 23:48:41 +02:00
parent dc469ee576
commit 7b03955595
@@ -754,19 +754,34 @@ class BillsListViewActivity :
} }
if (db.cowspentServerSyncHelper.isSyncPossible) { if (db.cowspentServerSyncHelper.isSyncPossible) {
viewModel.isRefreshing = true viewModel.isRefreshing = manual
val selectedProjectId = PreferenceManager.getDefaultSharedPreferences(applicationContext).getLong("selected_project", 0) val selectedProjectId = preferences.getLong("selected_project", 0)
if (selectedProjectId != 0L) {
lifecycleScope.launch { lifecycleScope.launch {
val proj = withContext(Dispatchers.IO) { db.getProject(selectedProjectId) } val projects = withContext(Dispatchers.IO) { db.projects }
if (proj != null && !proj.isLocal) { val remoteProjects = projects.filter { !it.isLocal }
if (remoteProjects.isNotEmpty()) {
// Sync selected project first to prioritize it (it starts immediately or becomes top of stack)
val selectedProj = remoteProjects.find { it.id == selectedProjectId }
if (selectedProj != null) {
db.cowspentServerSyncHelper.addCallbackPull(syncCallBack) db.cowspentServerSyncHelper.addCallbackPull(syncCallBack)
db.cowspentServerSyncHelper.scheduleSync(false, selectedProjectId, manual) db.cowspentServerSyncHelper.scheduleSync(false, selectedProjectId, manual)
} else viewModel.isRefreshing = false } else if (manual) {
viewModel.isRefreshing = false
}
// Sync other projects (they will be queued)
remoteProjects.filter { it.id != selectedProjectId }.forEach {
db.cowspentServerSyncHelper.scheduleSync(false, it.id, manual)
}
} else {
viewModel.isRefreshing = false
}
if (CowspentServerSyncHelper.isNextcloudAccountConfigured(applicationContext)) {
db.cowspentServerSyncHelper.runAccountProjectsSync()
} }
} else viewModel.isRefreshing = false
if (CowspentServerSyncHelper.isNextcloudAccountConfigured(applicationContext)) {
db.cowspentServerSyncHelper.runAccountProjectsSync()
} }
} }
} }