diff options
Diffstat (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt')
-rw-r--r-- | merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt index d7c446f..70c7b18 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigManager.kt @@ -26,7 +26,8 @@ import androidx.annotation.WorkerThread import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import io.ktor.client.HttpClient -import io.ktor.client.features.ClientRequestException +import io.ktor.client.call.body +import io.ktor.client.plugins.ClientRequestException import io.ktor.client.request.get import io.ktor.client.request.header import io.ktor.http.HttpHeaders.Authorization @@ -34,11 +35,12 @@ import io.ktor.http.HttpStatusCode.Companion.Unauthorized import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import net.taler.common.Version import net.taler.common.getIncompatibleStringOrNull -import net.taler.lib.common.Version import net.taler.merchantlib.ConfigResponse import net.taler.merchantlib.MerchantApi import net.taler.merchantlib.MerchantConfig +import net.taler.merchantpos.BuildConfig import net.taler.merchantpos.R private const val SETTINGS_NAME = "taler-merchant-terminal" @@ -51,7 +53,7 @@ internal const val CONFIG_URL_DEMO = "https://docs.taler.net/_static/sample-pos- internal const val CONFIG_USERNAME_DEMO = "" internal const val CONFIG_PASSWORD_DEMO = "" -private val VERSION = Version(1, 0, 0) +private val VERSION = Version.parse(BuildConfig.BACKEND_API_VERSION)!! private val TAG = ConfigManager::class.java.simpleName @@ -73,7 +75,7 @@ class ConfigManager( private val configurationReceivers = ArrayList<ConfigurationReceiver>() var config = Config( - configUrl = prefs.getString(SETTINGS_CONFIG_URL, CONFIG_URL_DEMO)!!, + configUrl = prefs.getString(SETTINGS_CONFIG_URL, "")!!, username = prefs.getString(SETTINGS_USERNAME, CONFIG_USERNAME_DEMO)!!, password = prefs.getString(SETTINGS_PASSWORD, CONFIG_PASSWORD_DEMO)!! ) @@ -84,8 +86,8 @@ class ConfigManager( var currency: String? = null private set - private val mConfigUpdateResult = MutableLiveData<ConfigUpdateResult>() - val configUpdateResult: LiveData<ConfigUpdateResult> = mConfigUpdateResult + private val mConfigUpdateResult = MutableLiveData<ConfigUpdateResult?>() + val configUpdateResult: LiveData<ConfigUpdateResult?> = mConfigUpdateResult fun addConfigurationReceiver(receiver: ConfigurationReceiver) { configurationReceivers.add(receiver) @@ -105,7 +107,7 @@ class ConfigManager( val credentials = "${config.username}:${config.password}" val auth = ("Basic ${encodeToString(credentials.toByteArray(), NO_WRAP)}") header(Authorization, auth) - } + }.body() val merchantConfig = posConfig.merchantConfig // get config from merchant backend API api.getConfig(merchantConfig.baseUrl).handleSuspend(::onNetworkError) { @@ -115,7 +117,7 @@ class ConfigManager( Log.e(TAG, "Error retrieving merchant config", e) val msg = if (e is ClientRequestException) { context.getString( - if (e.response?.status == Unauthorized) R.string.config_auth_error + if (e.response.status == Unauthorized) R.string.config_auth_error else R.string.config_error_network ) } else { @@ -136,6 +138,7 @@ class ConfigManager( val versionIncompatible = VERSION.getIncompatibleStringOrNull(context, configResponse.version) if (versionIncompatible != null) { + Log.e(TAG, "Versions incompatible $configResponse") mConfigUpdateResult.postValue(ConfigUpdateResult.Error(versionIncompatible)) return } |