Check version if it is unknown
This commit is contained in:
@@ -8,5 +8,7 @@ interface BaseURLStorage {
|
|||||||
|
|
||||||
suspend fun storeBaseURL(baseURL: String, version: String)
|
suspend fun storeBaseURL(baseURL: String, version: String)
|
||||||
|
|
||||||
|
suspend fun storeServerVersion(version: String)
|
||||||
|
|
||||||
suspend fun getServerVersion(): String?
|
suspend fun getServerVersion(): String?
|
||||||
}
|
}
|
||||||
@@ -32,5 +32,9 @@ class BaseURLStorageImpl @Inject constructor(
|
|||||||
|
|
||||||
override suspend fun getServerVersion(): String? = getValue(serverVersionKey)
|
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)
|
private suspend fun <T> getValue(key: Preferences.Key<T>): T? = preferencesStorage.getValue(key)
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,14 @@ class MealieDataSourceWrapper @Inject constructor(
|
|||||||
|
|
||||||
private suspend fun getUrl() = baseURLStorage.requireBaseURL()
|
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 =
|
private suspend inline fun <T> withAuthHeader(block: (String?) -> T): T =
|
||||||
runCatching { block(authRepo.getAuthHeader()) }.getOrElse {
|
runCatching { block(authRepo.getAuthHeader()) }.getOrElse {
|
||||||
|
|||||||
Reference in New Issue
Block a user