summaryrefslogtreecommitdiff
path: root/merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-08-04 09:46:38 -0300
committerTorsten Grote <t@grobox.de>2020-08-04 09:46:38 -0300
commit35f7ed512ed7445362d6caee1bf60441f4ce979e (patch)
tree08fb02c802ff36065dd85fb9dcb95a0adabc03c3 /merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt
parentd3a035c59c508b7b0ef3c06a1b0f1f3c0a077bb8 (diff)
downloadtaler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.tar.gz
taler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.tar.bz2
taler-android-35f7ed512ed7445362d6caee1bf60441f4ce979e.zip
[pos] Implement new refund API (untested since there is no wallet support)
Also do a bit of code cleanup and minor refactorings This also removes the volley HTTP library which is not needed anymore
Diffstat (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt')
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt164
1 files changed, 0 insertions, 164 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt
deleted file mode 100644
index 77a87fb..0000000
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/config/MerchantConfigFragment.kt
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * This file is part of GNU Taler
- * (C) 2020 Taler Systems S.A.
- *
- * GNU Taler is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3, or (at your option) any later version.
- *
- * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-package net.taler.merchantpos.config
-
-import android.net.Uri
-import android.os.Bundle
-import android.text.method.LinkMovementMethod
-import android.view.LayoutInflater
-import android.view.View
-import android.view.View.GONE
-import android.view.View.INVISIBLE
-import android.view.View.VISIBLE
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
-import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_LONG
-import com.google.android.material.snackbar.Snackbar
-import kotlinx.android.synthetic.main.fragment_merchant_config.*
-import net.taler.common.navigate
-import net.taler.merchantpos.MainViewModel
-import net.taler.merchantpos.R
-import net.taler.merchantpos.config.MerchantConfigFragmentDirections.Companion.actionSettingsToOrder
-import net.taler.merchantpos.topSnackbar
-
-/**
- * Fragment that displays merchant settings.
- */
-class MerchantConfigFragment : Fragment() {
-
- private val model: MainViewModel by activityViewModels()
- private val configManager by lazy { model.configManager }
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- return inflater.inflate(R.layout.fragment_merchant_config, container, false)
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- configUrlView.editText!!.setOnFocusChangeListener { _, hasFocus ->
- if (!hasFocus) checkForUrlCredentials()
- }
- okButton.setOnClickListener {
- checkForUrlCredentials()
- val inputUrl = configUrlView.editText!!.text
- val url = if (inputUrl.startsWith("http")) {
- inputUrl.toString()
- } else {
- "https://$inputUrl".also { configUrlView.editText!!.setText(it) }
- }
- progressBar.visibility = VISIBLE
- okButton.visibility = INVISIBLE
- val config = Config(
- configUrl = url,
- username = usernameView.editText!!.text.toString(),
- password = passwordView.editText!!.text.toString()
- )
- configManager.fetchConfig(config, true, savePasswordCheckBox.isChecked)
- configManager.configUpdateResult.observe(viewLifecycleOwner, Observer { result ->
- if (onConfigUpdate(result)) {
- configManager.configUpdateResult.removeObservers(viewLifecycleOwner)
- }
- })
- }
- forgetPasswordButton.setOnClickListener {
- configManager.forgetPassword()
- passwordView.editText!!.text = null
- forgetPasswordButton.visibility = GONE
- }
- configDocsView.movementMethod = LinkMovementMethod.getInstance()
- updateView(savedInstanceState == null)
- }
-
- override fun onStart() {
- super.onStart()
- // focus password if this is the only empty field
- if (passwordView.editText!!.text.isBlank()
- && !configUrlView.editText!!.text.isBlank()
- && !usernameView.editText!!.text.isBlank()
- ) {
- passwordView.requestFocus()
- }
- }
-
- private fun updateView(isInitialization: Boolean = false) {
- val config = configManager.config
- configUrlView.editText!!.setText(
- if (isInitialization && config.configUrl.isBlank()) CONFIG_URL_DEMO
- else config.configUrl
- )
- usernameView.editText!!.setText(
- if (isInitialization && config.username.isBlank()) CONFIG_USERNAME_DEMO
- else config.username
- )
- passwordView.editText!!.setText(
- if (isInitialization && config.password.isBlank()) CONFIG_PASSWORD_DEMO
- else config.password
- )
- forgetPasswordButton.visibility = if (config.hasPassword()) VISIBLE else GONE
- }
-
- private fun checkForUrlCredentials() {
- val text = configUrlView.editText!!.text.toString()
- Uri.parse(text)?.userInfo?.let { userInfo ->
- if (userInfo.contains(':')) {
- val (user, pass) = userInfo.split(':')
- val strippedUrl = text.replace("${userInfo}@", "")
- configUrlView.editText!!.setText(strippedUrl)
- usernameView.editText!!.setText(user)
- passwordView.editText!!.setText(pass)
- }
- }
- }
-
- /**
- * Processes updated config and returns true, if observer can be removed.
- */
- private fun onConfigUpdate(result: ConfigUpdateResult?) = when (result) {
- null -> false
- is ConfigUpdateResult.Error -> {
- onError(result.msg)
- true
- }
- is ConfigUpdateResult.Success -> {
- onConfigReceived(result.currency)
- true
- }
- }
-
- private fun onConfigReceived(currency: String) {
- onResultReceived()
- updateView()
- topSnackbar(requireView(), getString(R.string.config_changed, currency), LENGTH_LONG)
- navigate(actionSettingsToOrder())
- }
-
- private fun onError(msg: String) {
- onResultReceived()
- Snackbar.make(requireView(), msg, LENGTH_LONG).show()
- }
-
- private fun onResultReceived() {
- progressBar.visibility = INVISIBLE
- okButton.visibility = VISIBLE
- }
-
-}