summaryrefslogtreecommitdiff
path: root/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-09-02 10:50:45 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-09-02 10:50:45 +0200
commit26228306686bb37c18a48b25eba59c354379150c (patch)
treeef21e7cddcb48d2a1554579b9255026ae83de33f /app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
parentd783859b7928566090c88be05c6cf3871de6fbf2 (diff)
downloadmerchant-terminal-android-26228306686bb37c18a48b25eba59c354379150c.tar.gz
merchant-terminal-android-26228306686bb37c18a48b25eba59c354379150c.tar.bz2
merchant-terminal-android-26228306686bb37c18a48b25eba59c354379150c.zip
implement backend settings
Diffstat (limited to 'app/src/main/java/net/taler/merchantpos/MerchantSettings.kt')
-rw-r--r--app/src/main/java/net/taler/merchantpos/MerchantSettings.kt111
1 files changed, 109 insertions, 2 deletions
diff --git a/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt b/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
index 1903bce..7797dcb 100644
--- a/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
+++ b/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
@@ -1,21 +1,128 @@
package net.taler.merchantpos
+import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import android.widget.TextView
+import androidx.lifecycle.ViewModelProviders
+import com.android.volley.Request
+import com.android.volley.RequestQueue
+import com.android.volley.Response
+import com.android.volley.VolleyError
+import com.android.volley.toolbox.Volley
+import com.google.android.material.snackbar.Snackbar
+import org.json.JSONObject
/**
* Fragment that displays merchant settings.
*/
class MerchantSettings : Fragment() {
+
+ private lateinit var queue: RequestQueue
+ private lateinit var model: PosTerminalViewModel
+
+ private var newConfig: MerchantConfig? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ model = activity?.run {
+ ViewModelProviders.of(this)[PosTerminalViewModel::class.java]
+ } ?: throw Exception("Invalid Activity")
+
+ queue = Volley.newRequestQueue(context)
+ }
+
+ private fun reset(view: View) {
+ val backendUrlEdit = view.findViewById<EditText>(R.id.edit_settings_backend_url)
+ backendUrlEdit.setText(model.merchantConfig!!.baseUrl, TextView.BufferType.EDITABLE)
+
+ val backendInstanceEdit = view.findViewById<EditText>(R.id.edit_settings_instance)
+ backendInstanceEdit.setText(model.merchantConfig!!.instance, TextView.BufferType.EDITABLE)
+
+ val backendApiKeyEdit = view.findViewById<EditText>(R.id.edit_settings_apikey)
+ backendApiKeyEdit.setText(model.merchantConfig!!.apiKey, TextView.BufferType.EDITABLE)
+
+ val currencyView = view.findViewById<TextView>(R.id.text_settings_currency)
+ currencyView.text = model.merchantConfig!!.currency
+ }
+
+
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_merchant_settings, container, false)
+ val view = inflater.inflate(R.layout.fragment_merchant_settings, container, false)
+
+ reset(view)
+
+ val buttonApply = view.findViewById<Button>(R.id.button_settings_apply)
+ buttonApply.setOnClickListener {
+
+ val backendUrlEdit = view.findViewById<EditText>(R.id.edit_settings_backend_url)
+ val backendInstanceEdit = view.findViewById<EditText>(R.id.edit_settings_instance)
+ val backendApiKeyEdit = view.findViewById<EditText>(R.id.edit_settings_apikey)
+
+ val config = MerchantConfig(
+ backendUrlEdit.text.toString(),
+ backendInstanceEdit.text.toString(),
+ backendApiKeyEdit.text.toString(),
+ "UNKNOWN"
+ )
+
+ newConfig = config
+
+ val req = MerchantInternalRequest(
+ Request.Method.GET,
+ config,
+ "config",
+ mapOf("instance" to config.instance),
+ null,
+ Response.Listener { onConfigReceived(it) },
+ Response.ErrorListener { onNetworkError(it) })
+
+ queue.add(req)
+
+ }
+
+ val buttonReset = view.findViewById<Button>(R.id.button_settings_reset)
+ buttonReset.setOnClickListener {
+ reset(view)
+ }
+
+ return view
+ }
+
+ private fun onConfigReceived(it: JSONObject) {
+ val currency = it.getString("currency")
+ val mySnackbar =
+ Snackbar.make(view!!, "Changed to new ${currency} merchant", Snackbar.LENGTH_SHORT)
+
+ val config = this.newConfig!!.copy(currency = currency)
+ this.newConfig = null
+ model.merchantConfig = config
+
+ val currencyView = view!!.findViewById<TextView>(R.id.text_settings_currency)
+ currencyView.text = currency
+
+ mySnackbar.show()
+
+ val prefs = activity!!.getSharedPreferences("taler-merchant-terminal", Context.MODE_PRIVATE)
+ prefs.edit().putString("merchantBackendUrl", config.baseUrl)
+ .putString("merchantBackendInstance", config.instance)
+ .putString("merchantBackendApiKey", config.apiKey)
+ .putString("merchantBackendCurrency", config.currency)
+ }
+
+ private fun onNetworkError(it: VolleyError) {
+ val mySnackbar =
+ Snackbar.make(view!!, "Error: Invalid Configuration", Snackbar.LENGTH_SHORT)
+ mySnackbar.show()
}
}