diff options
Diffstat (limited to 'cashier/src/main/java/net/taler/cashier/config')
-rw-r--r-- | cashier/src/main/java/net/taler/cashier/config/ConfigFragment.kt | 30 | ||||
-rw-r--r-- | cashier/src/main/java/net/taler/cashier/config/ConfigManager.kt | 12 |
2 files changed, 23 insertions, 19 deletions
diff --git a/cashier/src/main/java/net/taler/cashier/config/ConfigFragment.kt b/cashier/src/main/java/net/taler/cashier/config/ConfigFragment.kt index e6ac249..3085bef 100644 --- a/cashier/src/main/java/net/taler/cashier/config/ConfigFragment.kt +++ b/cashier/src/main/java/net/taler/cashier/config/ConfigFragment.kt @@ -37,22 +37,23 @@ import net.taler.cashier.MainViewModel import net.taler.cashier.R import net.taler.cashier.databinding.FragmentConfigBinding import net.taler.common.exhaustive +import net.taler.common.showError -private const val URL_BANK_TEST = "https://bank.test.taler.net" -private const val URL_BANK_TEST_REGISTER = "$URL_BANK_TEST/accounts/register" +private const val URL_BANK_TEST = "https://bank.demo.taler.net" +private const val URL_BANK_TEST_REGISTER = "https://bank.demo.taler.net/webui/#/register" class ConfigFragment : Fragment() { private val viewModel: MainViewModel by activityViewModels() - private val configManager by lazy { viewModel.configManager} + private val configManager by lazy { viewModel.configManager } private lateinit var ui: FragmentConfigBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { + savedInstanceState: Bundle?, + ): View { ui = FragmentConfigBinding.inflate(inflater, container, false) return ui.root } @@ -73,9 +74,9 @@ class ConfigFragment : Fragment() { } ui.saveButton.setOnClickListener { val config = Config( - bankUrl = ui.urlView.editText!!.text.toString(), - username = ui.usernameView.editText!!.text.toString(), - password = ui.passwordView.editText!!.text.toString() + bankUrl = ui.urlView.editText!!.text.toString().trim(), + username = ui.usernameView.editText!!.text.toString().trim(), + password = ui.passwordView.editText!!.text.toString().trim() ) if (checkConfig(config)) { // show progress @@ -110,13 +111,15 @@ class ConfigFragment : Fragment() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) // for some reason automatic restore isn't working at the moment!? - outState.putCharSequence("urlView", ui.urlView.editText?.text) - outState.putCharSequence("usernameView", ui.usernameView.editText?.text) - outState.putCharSequence("passwordView", ui.passwordView.editText?.text) + outState.putCharSequence("urlView", ui.urlView.editText?.text?.trim()) + outState.putCharSequence("usernameView", ui.usernameView.editText?.text?.trim()) + outState.putCharSequence("passwordView", ui.passwordView.editText?.text?.trim()) } private fun checkConfig(config: Config): Boolean { - if (!config.bankUrl.startsWith("https://")) { + if (!config.bankUrl.startsWith("https://") && + !config.bankUrl.startsWith("http://") + ) { ui.urlView.error = getString(R.string.config_bank_url_error) ui.urlView.requestFocus() return false @@ -144,8 +147,7 @@ class ConfigFragment : Fragment() { if (result.authError) { Snackbar.make(requireView(), R.string.config_error_auth, LENGTH_LONG).show() } else { - val str = getString(R.string.config_error, result.msg) - Snackbar.make(requireView(), str, LENGTH_LONG).show() + requireActivity().showError(getString(R.string.config_error), result.msg) } } }.exhaustive diff --git a/cashier/src/main/java/net/taler/cashier/config/ConfigManager.kt b/cashier/src/main/java/net/taler/cashier/config/ConfigManager.kt index 0718963..50b1faf 100644 --- a/cashier/src/main/java/net/taler/cashier/config/ConfigManager.kt +++ b/cashier/src/main/java/net/taler/cashier/config/ConfigManager.kt @@ -29,6 +29,7 @@ import androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionSc import androidx.security.crypto.MasterKeys import androidx.security.crypto.MasterKeys.AES256_GCM_SPEC import io.ktor.client.HttpClient +import io.ktor.client.call.body import io.ktor.client.request.get import io.ktor.client.request.header import io.ktor.http.HttpHeaders.Authorization @@ -37,12 +38,13 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import net.taler.cashier.BuildConfig import net.taler.cashier.Response import net.taler.cashier.Response.Companion.response +import net.taler.common.Version import net.taler.common.getIncompatibleStringOrNull -import net.taler.lib.common.Version -val VERSION_BANK = Version(0, 0, 0) +val VERSION_BANK = Version.parse(BuildConfig.BACKEND_API_VERSION)!! private const val PREF_NAME = "net.taler.cashier.prefs" private const val PREF_KEY_BANK_URL = "bankUrl" private const val PREF_KEY_USERNAME = "username" @@ -54,7 +56,7 @@ private val TAG = ConfigManager::class.java.simpleName class ConfigManager( private val app: Application, private val scope: CoroutineScope, - private val httpClient: HttpClient + private val httpClient: HttpClient, ) { val configDestination = ConfigFragmentDirections.actionGlobalConfigFragment() @@ -116,7 +118,7 @@ class ConfigManager( val url = "${config.bankUrl}/config" Log.d(TAG, "Checking config: $url") val configResponse = response { - httpClient.get(url) as ConfigResponse + httpClient.get(url).body<ConfigResponse>() } if (configResponse.isFailure) { configResponse @@ -126,7 +128,7 @@ class ConfigManager( val balanceResponse = response { val authUrl = "${config.bankUrl}/accounts/${config.username}" Log.d(TAG, "Checking auth: $authUrl") - httpClient.get<Unit>(authUrl) { + httpClient.get(authUrl) { header(Authorization, config.basicAuth) } } |