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) {
viewModel.isRefreshing = true
val selectedProjectId = PreferenceManager.getDefaultSharedPreferences(applicationContext).getLong("selected_project", 0)
if (selectedProjectId != 0L) {
lifecycleScope.launch {
val proj = withContext(Dispatchers.IO) { db.getProject(selectedProjectId) }
if (proj != null && !proj.isLocal) {
viewModel.isRefreshing = manual
val selectedProjectId = preferences.getLong("selected_project", 0)
lifecycleScope.launch {
val projects = withContext(Dispatchers.IO) { db.projects }
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.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()
}
}
}