Check version if it is unknown

This commit is contained in:
Kirill Kamakin
2022-10-29 17:14:24 +02:00
parent 17fc2f62bd
commit 4577aac8fc
3 changed files with 14 additions and 1 deletions

View File

@@ -8,5 +8,7 @@ interface BaseURLStorage {
suspend fun storeBaseURL(baseURL: String, version: String)
suspend fun storeServerVersion(version: String)
suspend fun getServerVersion(): String?
}

View File

@@ -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 <T> getValue(key: Preferences.Key<T>): T? = preferencesStorage.getValue(key)
}

View File

@@ -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 <T> withAuthHeader(block: (String?) -> T): T =
runCatching { block(authRepo.getAuthHeader()) }.getOrElse {