From cac98ee3d4b62b1049f9a97fef81cad890a2e9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sun, 2 Feb 2025 15:48:11 +0100 Subject: [PATCH] [App] Force full sync on update --- app/src/main/java/pl/szczodrzynski/edziennik/App.kt | 8 ++++++++ .../main/java/pl/szczodrzynski/edziennik/config/Config.kt | 1 + .../edziennik/data/api/szkolny/SzkolnyApi.kt | 2 +- .../edziennik/data/db/dao/EndpointTimerDao.kt | 3 +++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt index 74e23d88..e89726c6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt @@ -241,6 +241,14 @@ class App : MultiDexApplication(), Configuration.Provider, CoroutineScope { withContext(Dispatchers.Default) { config.migrate(this@App) + if (config.appVersionCore < BuildConfig.VERSION_CODE) { + // force syncing all endpoints on update + db.endpointTimerDao().clear() + config.sync.lastAppSync = 0L + config.hash = "invalid" + config.appVersionCore = BuildConfig.VERSION_CODE + } + SSLProviderInstaller.install(applicationContext, this@App::buildHttp) if (config.devModePassword != null) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt index 2042e8b2..eec66c49 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt @@ -43,6 +43,7 @@ class Config(db: AppDb) : BaseConfig(db) { var appInstalledTime by config(0L) var appRateSnackbarTime by config(0L) var appVersion by config(BuildConfig.VERSION_CODE) + var appVersionCore by config(0) var validation by config(null, "buildValidation") var archiverEnabled by config(true) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt index 954d6bb1..2f3bf634 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt @@ -206,7 +206,7 @@ class SzkolnyApi(val app: App) : CoroutineScope { teams.filter { it.profileId == profile.id }.map { it.code } ) val hash = user.toString().md5() - if (hash == profile.config.hash) + if (hash == profile.config.hash && app.config.hash != "invalid") return@mapNotNull null return@mapNotNull user to profile.config } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/EndpointTimerDao.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/EndpointTimerDao.kt index c0ff0464..512218da 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/EndpointTimerDao.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/dao/EndpointTimerDao.kt @@ -24,4 +24,7 @@ interface EndpointTimerDao { @Query("DELETE FROM endpointTimers WHERE profileId = :profileId") fun clear(profileId: Int) + + @Query("DELETE FROM endpointTimers") + fun clear() }