From 77b849f40ec88be56eb7bfa7636eb21b67e6a970 Mon Sep 17 00:00:00 2001 From: "Nelson R. Perez" Date: Wed, 22 Feb 2017 19:57:40 -0500 Subject: [PATCH] Changing the send form verification procedure for more CPU-friendly one --- .../smartcoinswallet/SendScreen.java | 223 +++++++++--------- .../bitshares_munich/utils/Application.java | 1 - .../main/res/drawable-hdpi/ic_send_button.png | Bin 0 -> 616 bytes .../main/res/drawable-mdpi/ic_send_button.png | Bin 0 -> 348 bytes .../res/drawable-xhdpi/ic_send_button.png | Bin 0 -> 633 bytes .../res/drawable-xxhdpi/ic_send_button.png | Bin 0 -> 1167 bytes .../res/drawable-xxxhdpi/ic_send_button.png | Bin 0 -> 1112 bytes .../{mipmap-hdpi => drawable}/icon_camera.png | Bin .../icon_receive.png | Bin .../{mipmap-hdpi => drawable}/icon_send.png | Bin app/src/main/res/drawable/send_button.png | Bin 0 -> 15292 bytes .../res/drawable/send_button_background.xml | 5 + app/src/main/res/layout/fragment_balances.xml | 8 +- app/src/main/res/layout/send_screen.xml | 87 ++++--- app/src/main/res/values/strings.xml | 2 +- 15 files changed, 170 insertions(+), 156 deletions(-) create mode 100755 app/src/main/res/drawable-hdpi/ic_send_button.png create mode 100755 app/src/main/res/drawable-mdpi/ic_send_button.png create mode 100755 app/src/main/res/drawable-xhdpi/ic_send_button.png create mode 100755 app/src/main/res/drawable-xxhdpi/ic_send_button.png create mode 100755 app/src/main/res/drawable-xxxhdpi/ic_send_button.png rename app/src/main/res/{mipmap-hdpi => drawable}/icon_camera.png (100%) rename app/src/main/res/{mipmap-hdpi => drawable}/icon_receive.png (100%) rename app/src/main/res/{mipmap-hdpi => drawable}/icon_send.png (100%) create mode 100644 app/src/main/res/drawable/send_button.png create mode 100644 app/src/main/res/drawable/send_button_background.xml diff --git a/app/src/main/java/de/bitshares_munich/smartcoinswallet/SendScreen.java b/app/src/main/java/de/bitshares_munich/smartcoinswallet/SendScreen.java index 0180b0ff..9d687e26 100644 --- a/app/src/main/java/de/bitshares_munich/smartcoinswallet/SendScreen.java +++ b/app/src/main/java/de/bitshares_munich/smartcoinswallet/SendScreen.java @@ -63,7 +63,6 @@ import butterknife.OnTextChanged; import de.bitshares_munich.database.HistoricalTransferEntry; import de.bitshares_munich.database.SCWallDatabase; -import de.bitshares_munich.interfaces.IAccount; import de.bitshares_munich.interfaces.IExchangeRate; import de.bitshares_munich.interfaces.IRelativeHistory; import de.bitshares_munich.interfaces.ContactSelectionListener; @@ -89,7 +88,6 @@ import de.bitsharesmunich.graphenej.TransferTransactionBuilder; import de.bitsharesmunich.graphenej.UserAccount; import de.bitsharesmunich.graphenej.api.GetAccountByName; -import de.bitsharesmunich.graphenej.api.GetRelativeAccountHistory; import de.bitsharesmunich.graphenej.api.TransactionBroadcastSequence; import de.bitsharesmunich.graphenej.crypto.SecureRandomGenerator; import de.bitsharesmunich.graphenej.errors.MalformedTransactionException; @@ -106,7 +104,7 @@ /** * Created by Syed Muhammad Muzzammil on 5/6/16. */ -public class SendScreen extends BaseActivity implements IExchangeRate, IAccount, IRelativeHistory, ContactSelectionListener { +public class SendScreen extends BaseActivity implements IExchangeRate, IRelativeHistory, ContactSelectionListener { private static final String TAG = "SendScreen"; TinyDB tinyDB; @@ -184,10 +182,7 @@ public class SendScreen extends BaseActivity implements IExchangeRate, IAccount, Spinner spinnerFrom; @Bind(R.id.btnSend) - LinearLayout btnSend; - - @Bind(R.id.sendicon) - ImageView sendicon; + Button btnSend; @Bind(R.id.etLoyalty) EditText etLoyalty; @@ -210,7 +205,6 @@ public class SendScreen extends BaseActivity implements IExchangeRate, IAccount, * Handler and delay */ private int REQUEST_TRANSFER_HISTORY_DELAY = 1800; - private Handler mHandler; /** * Instance of the database interface @@ -269,25 +263,6 @@ public void onError(BaseResponse.Error error) { } }; - /** - * Callback that obtains the response from the get_account_by_name API call. - * Here we're just interested in get one of the public keys from the recipient account - * in order to use it for memo encryption. - */ - private WitnessResponseListener accountByNameListener = new WitnessResponseListener() { - @Override - public void onSuccess(WitnessResponse response) { - Log.d(TAG,"accountByNameListener. onSuccess"); - AccountProperties accountProperties = ((WitnessResponse) response).result; - destination = accountProperties.active.getKeyAuths().keySet().iterator().next(); - } - - @Override - public void onError(BaseResponse.Error error) { - Log.d(TAG,"accountByNameListener.onError. Msg: "+error.message); - } - }; - /** * Callback fired when we get a response from the transaction broadcast * sequence for the donation button. @@ -360,7 +335,7 @@ protected void onCreate(Bundle savedInstanceState) { ButterKnife.bind(this); Application.registerExchangeRateCallback(this); - Application.registerCallback(this); +// Application.registerCallback(this); Application.registerRelativeHistoryCallback(this); tvAppVersion.setText("v" + BuildConfig.VERSION_NAME + getString(R.string.beta)); @@ -372,33 +347,6 @@ protected void onCreate(Bundle savedInstanceState) { cbAlwaysDonate.setText(getString(R.string.checkbox_donate) + " BitShares Munich"); - final Handler handler = new Handler(); - handler.postDelayed(new Runnable() { - @Override - public void run() { - if (!validReceiver && !validating) { - if (etReceiverAccount.getText().length() > 0) { - myLowerCaseTimer.cancel(); - myAccountNameValidationTimer.cancel(); - myLowerCaseTimer.start(); - myAccountNameValidationTimer.start(); - } - } - //Do something after 100ms - if (validateSend() && validReceiver) { - btnSend.setEnabled(true); - btnSend.setBackgroundColor(getColorWrapper(getApplicationContext(), R.color.redcolor)); - sendicon.setImageDrawable(getDrawable(getApplicationContext(), R.mipmap.icon_send)); - - } else { -// btnSend.setEnabled(false); - btnSend.setBackgroundColor(getColorWrapper(getApplicationContext(), R.color.gray)); - sendicon.setImageDrawable(getDrawable(getApplicationContext(), R.drawable.sendicon2)); - } - handler.postDelayed(this, 200); - } - }, 100); - database = new SCWallDatabase(this); } @@ -453,8 +401,6 @@ void onTextChangedTo(CharSequence text) { } tvErrorRecieverAccount.setVisibility(View.GONE); loadWebView(webviewTo, 34, Helper.hash(etReceiverAccount.getText().toString(), Helper.SHA256)); - - mHandler = new Handler(); } @OnFocusChange(R.id.etReceiverAccount) @@ -472,7 +418,7 @@ public void onFocusChange(boolean hasFocus) { } @OnTextChanged(R.id.etAmount) void onAmountChanged(CharSequence text) { - updateAmountStatus(); + onTransferAmountUpdated(); } Boolean runningSpinerForFirstTime = true; @@ -502,7 +448,7 @@ void onItemSelected(int position) { @OnItemSelected(R.id.spAssets) void onAssetsSelected(int position) { if (loyaltyAsset == null) { - updateAmountStatus(); + onTransferAmountUpdated(); } if (backupAsset != null && !backupAsset.isEmpty()) { getExchangeRate(200); @@ -710,7 +656,8 @@ private void selectedAccountAsset() { } } - public void updateAmountStatus() { + public void onTransferAmountUpdated() { + Log.d(TAG,"onTransferAmountUpdated"); try { tvAmountStatus.setTextColor(tvTotalStatus.getTextColors()); String selectedAsset; @@ -762,8 +709,17 @@ public void updateAmountStatus() { tvAmountStatus.setTextColor(Color.RED); //shayan updateTotalStatus(); } catch (Exception e) { + Log.e(TAG,"Exception. Msg: "+e.getMessage()); + } + // Enabling or disabling the send button depending on + // the result of the validation. + if(validateSend()){ + btnSend.setEnabled(true); + }else{ + btnSend.setEnabled(false); } + } private void loadWebView(WebView webView, int size, String encryptText) { @@ -795,15 +751,56 @@ public void onFinish() { }; private void lookupAccounts() { - String socketText = getString(R.string.lookup_account_a); - String scketText2 = getString(R.string.lookup_account_b) + "\"" + etReceiverAccount.getText().toString() + "\"" + ",50]],\"id\": 6}"; - myWebSocketHelper.make_websocket_call(socketText, scketText2, webSocketCallHelper.api_identifier.database); +// String socketText = getString(R.string.lookup_account_a); +// String scketText2 = getString(R.string.lookup_account_b) + "\"" + etReceiverAccount.getText().toString() + "\"" + ",50]],\"id\": 6}"; +// myWebSocketHelper.make_websocket_call(socketText, scketText2, webSocketCallHelper.api_identifier.database); - this.getAccountByName = new WebsocketWorkerThread(new GetAccountByName(etReceiverAccount.getText().toString(), accountByNameListener), 0); + this.getAccountByName = new WebsocketWorkerThread(new GetAccountByName(etReceiverAccount.getText().toString(), mAccountByNameListener)); this.getAccountByName.start(); + validating = true; } - Handler reloadToAccountValidation = new Handler(); + /** + * Callback that obtains the response from the get_account_by_name API call. + * Here we're just interested in get one of the public keys from the recipient account + * in order to use it for memo encryption. + */ + private WitnessResponseListener mAccountByNameListener = new WitnessResponseListener() { + + @Override + public void onSuccess(final WitnessResponse response) { + Log.d(TAG,"mAccountByNameListener. onSuccess"); + + runOnUiThread(new Runnable() { + @Override + public void run() { + AccountProperties accountProperties = ((WitnessResponse) response).result; + if(accountProperties != null){ + Log.d(TAG,"Found account with name"); + Log.d(TAG,accountProperties.name); + destination = accountProperties.active.getKeyAuths().keySet().iterator().next(); + }else{ + Log.i(TAG, "No account with that name"); + destination = null; + } + + validating = false; + + // Check whether we can enable the "send" button or not + if(validateSend()){ + btnSend.setEnabled(true); + }else{ + btnSend.setEnabled(false); + } + } + }); + } + + @Override + public void onError(BaseResponse.Error error) { + Log.d(TAG,"mAccountByNameListener.onError. Msg: "+error.message); + } + }; public void createBitShareAN(boolean focused) { if (!focused) { @@ -1101,6 +1098,8 @@ public boolean validateSend() { return false; } else if (checkIfZero()) { return false; + } else if(destination == null){ + return false; } return true; } @@ -1229,58 +1228,48 @@ public void run() { } - @Override - public void checkAccount(JSONObject jsonObject) { - myWebSocketHelper.cleanUpTransactionsHandler(); - try { - JSONArray jsonArray = jsonObject.getJSONArray("result"); - boolean found = false; - for (int i = 0; i < jsonArray.length(); i++) { - final String accountName = jsonArray.getJSONArray(i).getString(0); - String accountId = jsonArray.getJSONArray(i).getString(1); - if (accountName.equals(etReceiverAccount.getText().toString())) { - Log.d(TAG, "valid account name: "+accountName+", account id: "+accountId); - found = true; - validReceiver = true; - receiverID = jsonArray.getJSONArray(i).getString(1); - runOnUiThread(new Runnable() { - @Override - public void run() { -// if (sendBtnPressed) { -//// validatingComplete(); -// } - } - }); - sendBtnPressed = false; - validating = false; -// destination = new UserAccount(accountId, accountName); - break; - } - } - if (!found) { - runOnUiThread(new Runnable() { - @Override - public void run() { - validReceiver = false; - sendBtnPressed = false; - validating = false; - // This code works correct, donot edit if it shows red underline - try { - String format = String.format(getResources().getString(R.string.account_name_not_exist), etReceiverAccount.getText()); - format = format.replaceAll("\\s+", " ").trim(); - tvErrorRecieverAccount.setText(format); - } catch (Exception e) { - tvErrorRecieverAccount.setText(""); - } - - tvErrorRecieverAccount.setVisibility(View.VISIBLE); - } - }); - } - } catch (Exception e) { - sendBtnPressed = false; - } - } +// @Override +// public void checkAccount(JSONObject jsonObject) { +// myWebSocketHelper.cleanUpTransactionsHandler(); +// try { +// JSONArray jsonArray = jsonObject.getJSONArray("result"); +// boolean found = false; +// for (int i = 0; i < jsonArray.length(); i++) { +// final String accountName = jsonArray.getJSONArray(i).getString(0); +// String accountId = jsonArray.getJSONArray(i).getString(1); +// if (accountName.equals(etReceiverAccount.getText().toString())) { +// found = true; +// validReceiver = true; +// receiverID = jsonArray.getJSONArray(i).getString(1); +// sendBtnPressed = false; +// validating = false; +// break; +// } +// } +// if (!found) { +// runOnUiThread(new Runnable() { +// @Override +// public void run() { +// validReceiver = false; +// sendBtnPressed = false; +// validating = false; +// // This code works correct, donot edit if it shows red underline +// try { +// String format = String.format(getResources().getString(R.string.account_name_not_exist), etReceiverAccount.getText()); +// format = format.replaceAll("\\s+", " ").trim(); +// tvErrorRecieverAccount.setText(format); +// } catch (Exception e) { +// tvErrorRecieverAccount.setText(""); +// } +// +// tvErrorRecieverAccount.setVisibility(View.VISIBLE); +// } +// }); +// } +// } catch (Exception e) { +// sendBtnPressed = false; +// } +// } private void showDialog(String title, String msg) { diff --git a/app/src/main/java/de/bitshares_munich/utils/Application.java b/app/src/main/java/de/bitshares_munich/utils/Application.java index 02f9edbf..a797e809 100644 --- a/app/src/main/java/de/bitshares_munich/utils/Application.java +++ b/app/src/main/java/de/bitshares_munich/utils/Application.java @@ -469,7 +469,6 @@ private static String headBlockNumber(String json) { } } if (rawBlockId.equals("")) { - Log.w(TAG, "Could not process data"); return blockHead; } // Setting block number diff --git a/app/src/main/res/drawable-hdpi/ic_send_button.png b/app/src/main/res/drawable-hdpi/ic_send_button.png new file mode 100755 index 0000000000000000000000000000000000000000..33f0caf17f25b9ac94dac5894586c105fa85b035 GIT binary patch literal 616 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 dY4(D_en&9p-K-3K + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_balances.xml b/app/src/main/res/layout/fragment_balances.xml index b14f9d1b..5a2c2ca7 100644 --- a/app/src/main/res/layout/fragment_balances.xml +++ b/app/src/main/res/layout/fragment_balances.xml @@ -80,7 +80,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" - android:src="@mipmap/icon_receive" + android:src="@drawable/icon_receive" android:visibility="visible"/> @@ -89,7 +89,7 @@ android:layout_height="100dp" android:layout_gravity="center" android:gravity="center" - android:src="@mipmap/icon_receive" + android:src="@drawable/icon_receive" android:visibility="gone"/> + android:src="@drawable/icon_send"/> - - - - - - - - - + android:enabled="false"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 451afb55..77183890 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -373,7 +373,7 @@ Error reading dictionary file Please try again after 5 minutes - You can\'t send amount into the same account + You can\'t send funds to the same account Bugs or Errors? Please let us know: