From c068efa84c80c13e28d6c095a69bdd535f937768 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 09:45:47 -0600 Subject: [PATCH] Create a toast extension function to reduce the boilerplate code required to create Toasts. Extracted string resources fron SendTransactionFragment and used the new toast extension funcion. --- .../fragments/SendTransactionFragment.kt | 25 ++++++++----------- .../bitsybitshareswallet/utils/Extensions.kt | 15 +++++++++++ app/src/main/res/values/strings.xml | 10 ++++++-- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index afe5b9c..1b1c9bd 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -27,10 +27,7 @@ import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.adapters.BalancesDetailsAdapter import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetail import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository -import cy.agorise.bitsybitshareswallet.utils.Constants -import cy.agorise.bitsybitshareswallet.utils.CryptoUtils -import cy.agorise.bitsybitshareswallet.utils.disable -import cy.agorise.bitsybitshareswallet.utils.enable +import cy.agorise.bitsybitshareswallet.utils.* import cy.agorise.bitsybitshareswallet.viewmodels.BalanceDetailViewModel import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate @@ -241,7 +238,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv } else { mSelectedUserAccount = null destinationPublicKey = null - tilTo.error = "Invalid account" + tilTo.error = getString(R.string.error__invalid_account) isToAccountCorrect = false } @@ -261,7 +258,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val id = mNetworkService!!.sendMessage(GetRequiredFees(transaction!!, asset), GetRequiredFees.REQUIRED_API) responseMap[id] = RESPONSE_GET_REQUIRED_FEES } else { - // TODO unableToSendTransactionError() + context?.toast(getString(R.string.msg__transaction_not_sent)) } } @@ -273,14 +270,13 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val id = mNetworkService!!.sendMessage(BroadcastTransaction(transaction), BroadcastTransaction.REQUIRED_API) responseMap[id] = RESPONSE_BROADCAST_TRANSACTION } else { - // TODO unableToSendTransactionError() + context?.toast(getString(R.string.msg__transaction_not_sent)) } } private fun handleBroadcastTransaction(message: JsonRpcResponse<*>) { if (message.result == null && message.error == null) { - // TODO extract string resources - Toast.makeText(context!!, "Transaction sent!", Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.text__transaction_sent)) // Remove information from the text fields and disable send button tietTo.setText("") @@ -289,9 +285,10 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv isToAccountCorrect = false isAmountCorrect = false enableDisableSendFAB() + + // TODO return to Main fragment ?? } else { - // TODO extract error messages to show a better explanation to the user - Toast.makeText(context!!, message.error.message, Toast.LENGTH_LONG).show() + context?.toast(message.error.message, Toast.LENGTH_LONG) } } @@ -313,8 +310,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { startCameraPreview() } else { - // TODO extract string resource - Toast.makeText(context!!, "Camera permission is necessary to read QR codes.", Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.msg__camera_permission_necessary)) } return } @@ -380,8 +376,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val currentAmount = balance.amount.toDouble() / Math.pow(10.0, balance.precision.toDouble()) if (currentAmount < amount) { - // TODO extract string resource - tilAmount.error = "Not enough funds" + tilAmount.error = getString(R.string.error__not_enough_funds) isAmountCorrect = false } else { tilAmount.isErrorEnabled = false diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt index 4ab5fae..bd533c2 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt @@ -1,15 +1,30 @@ package cy.agorise.bitsybitshareswallet.utils +import android.content.Context import android.content.res.ColorStateList +import android.widget.Toast import androidx.core.content.ContextCompat import com.google.android.material.floatingactionbutton.FloatingActionButton +/** + * Creates an enabled state, by enabling the button and using the given [colorResource] to color it. + */ fun FloatingActionButton.enable(colorResource: Int) { this.isEnabled = true this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) } +/** + * Creates a disabled state, by disabling the button and using the given [colorResource] to color it. + */ fun FloatingActionButton.disable(colorResource: Int) { this.isEnabled = false this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) +} + +/** + * Easily create a toast message with less boilerplate code + */ +fun Context.toast(message: CharSequence, duration: Int = Toast.LENGTH_LONG) { + Toast.makeText(this, message, duration).show() } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 970b144..30ff5ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,11 +49,18 @@ Filter Export - + To Amount Memo Scan QR + Invalid account + Not enough funds + Camera permission is necessary to read QR codes. + Transaction sent! + Unable to send transaction + + Asset Other… Please Send: %1$s %2$s @@ -83,5 +90,4 @@ Block: %1$s -