Show remove account confirmation.
- Created a Remove Account confirmation Dialog that appears when the user taps the REMOVE button. If the user has a PIN/Pattern selected, he must enter it successfully before showing the confirmation Dialog.
This commit is contained in:
parent
629c5ff82c
commit
e2008e5bcd
3 changed files with 33 additions and 6 deletions
|
@ -9,7 +9,9 @@ import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import androidx.collection.LongSparseArray
|
||||||
import androidx.lifecycle.ViewModelProviders
|
import androidx.lifecycle.ViewModelProviders
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.afollestad.materialdialogs.callbacks.onDismiss
|
import com.afollestad.materialdialogs.callbacks.onDismiss
|
||||||
|
@ -50,6 +52,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
private const val ACTION_CHANGE_SECURITY_LOCK = 1
|
private const val ACTION_CHANGE_SECURITY_LOCK = 1
|
||||||
private const val ACTION_SHOW_BRAINKEY = 2
|
private const val ACTION_SHOW_BRAINKEY = 2
|
||||||
private const val ACTION_UPGRADE_TO_LTM = 3
|
private const val ACTION_UPGRADE_TO_LTM = 3
|
||||||
|
private const val ACTION_REMOVE_ACCOUNT = 4
|
||||||
|
|
||||||
// Constants used to organize NetworkService requests
|
// Constants used to organize NetworkService requests
|
||||||
private const val RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES = 1
|
private const val RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES = 1
|
||||||
|
@ -70,7 +73,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
private var nodesAdapter: FullNodesAdapter? = null
|
private var nodesAdapter: FullNodesAdapter? = null
|
||||||
|
|
||||||
// Map used to keep track of request and response id pairs
|
// Map used to keep track of request and response id pairs
|
||||||
private val responseMap = HashMap<Long, Int>()
|
private val responseMap = LongSparseArray<Int>()
|
||||||
|
|
||||||
/** Transaction to upgrade to LTM */
|
/** Transaction to upgrade to LTM */
|
||||||
private var ltmTransaction: Transaction? = null
|
private var ltmTransaction: Transaction? = null
|
||||||
|
@ -144,6 +147,8 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
btnViewBrainKey.setOnClickListener { onShowBrainKeyButtonSelected() }
|
btnViewBrainKey.setOnClickListener { onShowBrainKeyButtonSelected() }
|
||||||
|
|
||||||
btnUpgradeToLTM.setOnClickListener { onUpgradeToLTMButtonSelected() }
|
btnUpgradeToLTM.setOnClickListener { onUpgradeToLTMButtonSelected() }
|
||||||
|
|
||||||
|
btnRemoveAccount.setOnClickListener { onRemoveAccountButtonSelected() }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showNodesDialog(v: View) {
|
private fun showNodesDialog(v: View) {
|
||||||
|
@ -188,8 +193,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
|
|
||||||
override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) {
|
override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) {
|
||||||
if (responseMap.containsKey(response.id)) {
|
if (responseMap.containsKey(response.id)) {
|
||||||
val responseType = responseMap[response.id]
|
when (responseMap[response.id]) {
|
||||||
when (responseType) {
|
|
||||||
RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES -> handleDynamicGlobalPropertiesNodes(response.result)
|
RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES -> handleDynamicGlobalPropertiesNodes(response.result)
|
||||||
RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_LTM -> handleDynamicGlobalPropertiesLTM(response.result)
|
RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_LTM -> handleDynamicGlobalPropertiesLTM(response.result)
|
||||||
RESPONSE_BROADCAST_TRANSACTION -> handleBroadcastTransaction(response)
|
RESPONSE_BROADCAST_TRANSACTION -> handleBroadcastTransaction(response)
|
||||||
|
@ -220,7 +224,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
ltmTransaction?.blockData = BlockData(headBlockNumber, headBlockId, expirationTime)
|
ltmTransaction?.blockData = BlockData(headBlockNumber, headBlockId, expirationTime)
|
||||||
|
|
||||||
val id = mNetworkService?.sendMessage(BroadcastTransaction(ltmTransaction), BroadcastTransaction.REQUIRED_API)
|
val id = mNetworkService?.sendMessage(BroadcastTransaction(ltmTransaction), BroadcastTransaction.REQUIRED_API)
|
||||||
if (id != null) responseMap[id] = RESPONSE_BROADCAST_TRANSACTION
|
if (id != null) responseMap.append(id, RESPONSE_BROADCAST_TRANSACTION)
|
||||||
|
|
||||||
// TODO use an indicator to show that a transaction is in progress
|
// TODO use an indicator to show that a transaction is in progress
|
||||||
}
|
}
|
||||||
|
@ -259,7 +263,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
private val mRequestDynamicGlobalPropertiesTask = object : Runnable {
|
private val mRequestDynamicGlobalPropertiesTask = object : Runnable {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
val id = mNetworkService?.sendMessage(GetDynamicGlobalProperties(), GetDynamicGlobalProperties.REQUIRED_API)
|
val id = mNetworkService?.sendMessage(GetDynamicGlobalProperties(), GetDynamicGlobalProperties.REQUIRED_API)
|
||||||
if (id != null) responseMap[id] = RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES
|
if (id != null) responseMap.append(id, RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_NODES)
|
||||||
|
|
||||||
mHandler.postDelayed(this, Constants.BLOCK_PERIOD)
|
mHandler.postDelayed(this, Constants.BLOCK_PERIOD)
|
||||||
}
|
}
|
||||||
|
@ -352,6 +356,7 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
ACTION_CHANGE_SECURITY_LOCK -> showChooseSecurityLockDialog()
|
ACTION_CHANGE_SECURITY_LOCK -> showChooseSecurityLockDialog()
|
||||||
ACTION_SHOW_BRAINKEY -> getBrainkey()
|
ACTION_SHOW_BRAINKEY -> getBrainkey()
|
||||||
ACTION_UPGRADE_TO_LTM -> showUpgradeToLTMDialog()
|
ACTION_UPGRADE_TO_LTM -> showUpgradeToLTMDialog()
|
||||||
|
ACTION_REMOVE_ACCOUNT -> showRemoveAccountDialog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,6 +428,11 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
showUpgradeToLTMDialog()
|
showUpgradeToLTMDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun onRemoveAccountButtonSelected() {
|
||||||
|
if (!verifySecurityLock(ACTION_REMOVE_ACCOUNT))
|
||||||
|
showRemoveAccountDialog()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtains the brainKey from the authorities db table for the current user account and if it is not null it passes
|
* Obtains the brainKey from the authorities db table for the current user account and if it is not null it passes
|
||||||
* the brainKey to a method to show it in a nice MaterialDialog
|
* the brainKey to a method to show it in a nice MaterialDialog
|
||||||
|
@ -485,7 +495,20 @@ class SettingsFragment : ConnectedFragment(), BaseSecurityLockDialog.OnPINPatter
|
||||||
ltmTransaction = Transaction(currentPrivateKey, null, operations)
|
ltmTransaction = Transaction(currentPrivateKey, null, operations)
|
||||||
|
|
||||||
val id = mNetworkService?.sendMessage(GetDynamicGlobalProperties(), GetDynamicGlobalProperties.REQUIRED_API)
|
val id = mNetworkService?.sendMessage(GetDynamicGlobalProperties(), GetDynamicGlobalProperties.REQUIRED_API)
|
||||||
if (id != null) responseMap[id] = RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_LTM
|
if (id != null) responseMap.append(id, RESPONSE_GET_DYNAMIC_GLOBAL_PROPERTIES_LTM)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showRemoveAccountDialog() {
|
||||||
|
context?.let { context ->
|
||||||
|
MaterialDialog(context).show {
|
||||||
|
title(R.string.title__remove_account)
|
||||||
|
message(R.string.msg__remove_account_confirmation)
|
||||||
|
negativeButton(android.R.string.cancel)
|
||||||
|
positiveButton(android.R.string.ok) {
|
||||||
|
Toast.makeText(it.context, "Removing Account", Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,6 +144,8 @@
|
||||||
<string name="msg__upgrade_account_error">Por favor, asegúrate de que tu cuenta tenga un balance suficiente para cubrir los costos.</string>
|
<string name="msg__upgrade_account_error">Por favor, asegúrate de que tu cuenta tenga un balance suficiente para cubrir los costos.</string>
|
||||||
<string name="msg__remove_current_account">Eliminar cuenta actual. Elimina la cuenta actual de éste dispositivo y crea o importa una diferente.</string>
|
<string name="msg__remove_current_account">Eliminar cuenta actual. Elimina la cuenta actual de éste dispositivo y crea o importa una diferente.</string>
|
||||||
<string name="button__remove">Eliminar</string>
|
<string name="button__remove">Eliminar</string>
|
||||||
|
<string name="title__remove_account">Eliminar Cuenta</string>
|
||||||
|
<string name="msg__remove_account_confirmation">¿Estás seguro de que deseas eliminar la cuenta actual de este dispositivo?</string>
|
||||||
<string name="title__bugs_or_ideas">Errores o Ideas?</string>
|
<string name="title__bugs_or_ideas">Errores o Ideas?</string>
|
||||||
<string name="msg__bugs_or_ideas">Telegram: https://t.me/Agorise\nKeybase: https://keybase.io/team/Agorise</string>
|
<string name="msg__bugs_or_ideas">Telegram: https://t.me/Agorise\nKeybase: https://keybase.io/team/Agorise</string>
|
||||||
<string name="title__bitshares_nodes_dialog">Bloque: %1$s</string>
|
<string name="title__bitshares_nodes_dialog">Bloque: %1$s</string>
|
||||||
|
|
|
@ -145,6 +145,8 @@
|
||||||
<string name="msg__upgrade_account_error">Please make sure your account has enough balance to cover the costs.</string>
|
<string name="msg__upgrade_account_error">Please make sure your account has enough balance to cover the costs.</string>
|
||||||
<string name="msg__remove_current_account">Remove the current Account. Remove the current Account from this device and create or import a different one.</string>
|
<string name="msg__remove_current_account">Remove the current Account. Remove the current Account from this device and create or import a different one.</string>
|
||||||
<string name="button__remove">Remove</string>
|
<string name="button__remove">Remove</string>
|
||||||
|
<string name="title__remove_account">Remove Account</string>
|
||||||
|
<string name="msg__remove_account_confirmation">Are you sure you want to remove the current account from this device?</string>
|
||||||
<string name="title__bugs_or_ideas">Bugs or Ideas?</string>
|
<string name="title__bugs_or_ideas">Bugs or Ideas?</string>
|
||||||
<string name="msg__bugs_or_ideas">Telegram: https://t.me/Agorise\nKeybase: https://keybase.io/team/Agorise</string>
|
<string name="msg__bugs_or_ideas">Telegram: https://t.me/Agorise\nKeybase: https://keybase.io/team/Agorise</string>
|
||||||
<string name="title__bitshares_nodes_dialog">Block: %1$s</string>
|
<string name="title__bitshares_nodes_dialog">Block: %1$s</string>
|
||||||
|
|
Loading…
Reference in a new issue