Sync improvements
This commit is contained in:
@@ -754,22 +754,37 @@ 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
|
||||||
}
|
}
|
||||||
} else 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)) {
|
if (CowspentServerSyncHelper.isNextcloudAccountConfigured(applicationContext)) {
|
||||||
db.cowspentServerSyncHelper.runAccountProjectsSync()
|
db.cowspentServerSyncHelper.runAccountProjectsSync()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun registerBroadcastReceiver() {
|
private fun registerBroadcastReceiver() {
|
||||||
val filter = IntentFilter().apply {
|
val filter = IntentFilter().apply {
|
||||||
|
|||||||
Reference in New Issue
Block a user