diff --git a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/BaseURLStorage.kt b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/BaseURLStorage.kt index 4c0bcee..e629625 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/BaseURLStorage.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/BaseURLStorage.kt @@ -8,5 +8,7 @@ interface BaseURLStorage { suspend fun storeBaseURL(baseURL: String, version: String) + suspend fun storeServerVersion(version: String) + suspend fun getServerVersion(): String? } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/BaseURLStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/BaseURLStorageImpl.kt index 86ac2f6..cb77608 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/BaseURLStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/BaseURLStorageImpl.kt @@ -32,5 +32,9 @@ class BaseURLStorageImpl @Inject constructor( override suspend fun getServerVersion(): String? = getValue(serverVersionKey) + override suspend fun storeServerVersion(version: String) { + preferencesStorage.storeValues(Pair(serverVersionKey, version)) + } + private suspend fun getValue(key: Preferences.Key): T? = preferencesStorage.getValue(key) } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt index b66084b..fdf640f 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt @@ -66,7 +66,14 @@ class MealieDataSourceWrapper @Inject constructor( private suspend fun getUrl() = baseURLStorage.requireBaseURL() - private suspend fun isV1() = baseURLStorage.getServerVersion().orEmpty().startsWith("v1") + private suspend fun isV1(): Boolean { + var version = baseURLStorage.getServerVersion() + if (version == null) { + version = getVersionInfo(getUrl()).version + baseURLStorage.storeServerVersion(version) + } + return version.startsWith("v1") + } private suspend inline fun withAuthHeader(block: (String?) -> T): T = runCatching { block(authRepo.getAuthHeader()) }.getOrElse {