diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-09-02 10:50:45 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-09-02 10:50:45 +0200 |
commit | 26228306686bb37c18a48b25eba59c354379150c (patch) | |
tree | ef21e7cddcb48d2a1554579b9255026ae83de33f /app/src/main/java/net/taler/merchantpos/MerchantSettings.kt | |
parent | d783859b7928566090c88be05c6cf3871de6fbf2 (diff) | |
download | merchant-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.kt | 111 |
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() } } |