Updated on 2026-08-14

This commit is contained in:
Tangem 2018-07-19 11:50:49 +03:00
parent 63fd9ecb0f
commit 2cc9082d38
4 changed files with 59 additions and 164 deletions

View file

@ -48,7 +48,6 @@ public class ETHRequestTask extends InfuraTask {
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
} else if (request.isMethod(InfuraRequest.METHOD_ETH_Call)) {
try {
@ -60,8 +59,8 @@ public class ETHRequestTask extends InfuraTask {
if (l.compareTo(BigInteger.ZERO) == 0) {
loadedWallet.mCard.setBlockchainID(Blockchain.Ethereum.getID());
loadedWallet.mCard.addTokenToBlockchainName();
loadedWallet.mSwipeRefreshLayout.setRefreshing(false);
loadedWallet.onRefresh();
loadedWallet.srlLoadedWallet.setRefreshing(false);
loadedWallet.refresh();
return;
}
@ -71,7 +70,6 @@ public class ETHRequestTask extends InfuraTask {
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
} else if (request.isMethod(InfuraRequest.METHOD_ETH_GetOutTransactionCount)) {
try {
@ -95,7 +93,6 @@ public class ETHRequestTask extends InfuraTask {
JSONObject err = msg.getJSONObject("error");
hashTX = err.getString("message");
LastSignStorage.setLastMessage(loadedWallet.mCard.getWallet(), hashTX);
loadedWallet.errorOnUpdate("Failed to send transaction. Try again");
return;
}
@ -115,20 +112,17 @@ public class ETHRequestTask extends InfuraTask {
} catch (Exception e) {
e.printStackTrace();
loadedWallet.errorOnUpdate("Failed to send transaction. Try again");
}
}
loadedWallet.updateViews();
} else {
loadedWallet.errorOnUpdate(request.error);
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
}
// if (loadedWallet.updateTasks.size() == 0)
loadedWallet.mSwipeRefreshLayout.setRefreshing(false);
loadedWallet.srlLoadedWallet.setRefreshing(false);
}
}

View file

@ -95,12 +95,10 @@ public class UpdateWalletInfoTask extends ElectrumTask {
loadedWallet.mCard.incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
} else {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
}
@ -120,12 +118,10 @@ public class UpdateWalletInfoTask extends ElectrumTask {
} catch (Exception e) {
engine.SwitchNode(loadedWallet.mCard);
loadedWallet.errorOnUpdate("Failed to send transaction. Try again.");
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate("Failed to send transaction. Try again.");
engine.SwitchNode(loadedWallet.mCard);
}
} else if (request.isMethod(ElectrumRequest.METHOD_ListUnspent)) {
@ -145,7 +141,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
@ -166,7 +161,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) {
@ -185,7 +179,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
@ -207,7 +200,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) {
@ -220,14 +212,12 @@ public class UpdateWalletInfoTask extends ElectrumTask {
jsHeader.getInt("timestamp")));
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
@ -264,7 +254,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
tx.isInput = !isOur;
} catch (BitcoinException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
// Log.e("TX", raw);
}
@ -272,7 +261,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
} catch (JSONException e) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
engine.SwitchNode(loadedWallet.mCard);
}
}
@ -282,12 +270,10 @@ public class UpdateWalletInfoTask extends ElectrumTask {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.mCard.incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
loadedWallet.errorOnUpdate(request.error);
engine.SwitchNode(loadedWallet.mCard);
}
} else {
loadedWallet.errorOnUpdate(request.error);
engine.SwitchNode(loadedWallet.mCard);
}
@ -299,23 +285,20 @@ public class UpdateWalletInfoTask extends ElectrumTask {
loadedWallet.mCard.incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
} else {
e.printStackTrace();
loadedWallet.errorOnUpdate(e.toString());
}
}
}
// if (loadedWallet.updateTasks.size() == 0)
loadedWallet.mSwipeRefreshLayout.setRefreshing(false);
loadedWallet.srlLoadedWallet.setRefreshing(false);
} catch (NullPointerException e) {
e.printStackTrace();
if (reference.get() != null) {
reference.get().mSwipeRefreshLayout.setRefreshing(false);
reference.get().srlLoadedWallet.setRefreshing(false);
}
}

View file

@ -68,13 +68,12 @@ import com.tangem.wallet.R;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
import static android.content.Context.CLIPBOARD_SERVICE;
public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefreshListener, NfcAdapter.ReaderCallback, CardProtocol.Notifications {
public class LoadedWallet extends Fragment implements NfcAdapter.ReaderCallback, CardProtocol.Notifications {
public static final String TAG = LoadedWallet.class.getSimpleName();
private static final int REQUEST_CODE_SEND_PAYMENT = 1;
@ -90,22 +89,21 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
public TangemCard mCard;
private Tag lastTag;
public SwipeRefreshLayout mSwipeRefreshLayout;
public SwipeRefreshLayout srlLoadedWallet;
private RelativeLayout rlProgressBar;
private TextView tvCardID, tvBalance, tvBalanceLine1, tvBalanceLine2, tvOffline, tvBalanceEquivalent, tvWallet, tvInputs, tvError, tvMessage, tvIssuer, tvBlockchain, tvValidationNode, tvHeader, tvCaution;
// private ProgressBar progressBar;
private ImageView ivPIN, ivPIN2orSecurityDelay, ivDeveloperVersion;
private AppCompatButton btnExtract;
// public List<AsyncTask> updateTasks = new ArrayList<>();
private boolean lastReadSuccess = true;
private VerifyCardTask verifyCardTask = null;
private int requestPIN2Count = 0;
private Timer timerHideErrorAndMessage = null;
private String newPIN = "", newPIN2 = "";
private CardProtocol mCardProtocol;
// private int scanTimes = 0;
OnlineVerifyTask onlineVerifyTask;
private OnlineVerifyTask onlineVerifyTask;
private static final String URL_CARD_VALIDATE = Server.API.Method.CARD_VALIDATE;
@ -115,19 +113,9 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
private class OnlineVerifyTask extends VerificationServerTask {
// @Override
// protected void onCancelled() {
// super.onCancelled();
// updateTasks.remove(this);
// onlineVerifyTask=null;
// if (updateTasks.size() == 0) mSwipeRefreshLayout.setRefreshing(false);
// }
@Override
protected void onPostExecute(List<VerificationServerProtocol.Request> requests) {
super.onPostExecute(requests);
// Log.i("OnlineVerifyTask", "onPostExecute[" + String.valueOf(updateTasks.size()) + "]");
// updateTasks.remove(this);
onlineVerifyTask = null;
for (VerificationServerProtocol.Request request : requests) {
@ -137,21 +125,17 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
mCard.setOnlineVerified(answer.results[0].passed);
} else {
mCard.setOnlineVerified(null);
errorOnUpdate(request.error);
}
} else {
mCard.setOnlineVerified(null);
errorOnUpdate(request.error);
}
}
// if (updateTasks.size() == 0)
mSwipeRefreshLayout.setRefreshing(false);
srlLoadedWallet.setRefreshing(false);
}
}
private void requestCardValidate() {
Map<String, String> params = new HashMap<>();
params.put("Content-Type", "application/json");
params.put("CID", Util.bytesToHex(mCard.getCID()));
params.put("publicKey", Util.bytesToHex(mCard.getCardPublicKey()));
new VolleyHelper().doRequest(getContext(), URL_CARD_VALIDATE, params);
@ -163,8 +147,8 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
super.onCreate(savedInstanceState);
mNfcManager = new NfcManager(getActivity(), this);
mCard = new TangemCard(Objects.requireNonNull(getActivity()).getIntent().getStringExtra(TangemCard.EXTRA_CARD));
mCard.LoadFromBundle(Objects.requireNonNull(getActivity().getIntent().getExtras()).getBundle(TangemCard.EXTRA_CARD));
mCard = new TangemCard(getActivity().getIntent().getStringExtra(TangemCard.EXTRA_CARD));
mCard.LoadFromBundle(getActivity().getIntent().getExtras().getBundle(TangemCard.EXTRA_CARD));
lastTag = getActivity().getIntent().getParcelableExtra(Main.EXTRA_LAST_DISCOVERED_TAG);
@ -175,8 +159,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
public View onCreateView(@NonNull final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fr_loaded_wallet, container, false);
mSwipeRefreshLayout = v.findViewById(R.id.swipe_container);
// progressBar = v.findViewById(R.id.progressBar);
srlLoadedWallet = v.findViewById(R.id.srlLoadedWallet);
rlProgressBar = v.findViewById(R.id.rlProgressBar);
ImageView ivTangemCard = v.findViewById(R.id.ivTangemCard);
tvBalance = v.findViewById(R.id.tvBalance);
@ -205,7 +188,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
btnExtract = v.findViewById(R.id.btnExtract);
tvBalanceEquivalent = v.findViewById(R.id.tvBalanceEquivalent);
mSwipeRefreshLayout.setOnRefreshListener(this);
if (mCard.getBlockchain() == Blockchain.Token)
tvBalance.setSingleLine(false);
@ -219,7 +201,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
tvInputs.setVisibility(visibleIOPuts);
try {
ivQR.setImageBitmap(UtilHelper.INSTANCE.generateQrCode(Objects.requireNonNull(engine).getShareWalletURI(mCard).toString()));
ivQR.setImageBitmap(UtilHelper.INSTANCE.generateQrCode(engine.getShareWalletURI(mCard).toString()));
} catch (WriterException e) {
e.printStackTrace();
}
@ -227,13 +209,12 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
updateViews();
if (!mCard.hasBalanceInfo()) {
mSwipeRefreshLayout.setRefreshing(true);
mSwipeRefreshLayout.postDelayed(this::onRefresh, 1000);
srlLoadedWallet.setRefreshing(true);
srlLoadedWallet.postDelayed(this::refresh, 1000);
}
if ((mCard.isOnlineVerified() == null || !mCard.isOnlineVerified()) && onlineVerifyTask == null) {
onlineVerifyTask = new OnlineVerifyTask();
// updateTasks.add(onlineVerifyTask);
onlineVerifyTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(mCard));
}
@ -242,10 +223,12 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
tvWallet.setText(mCard.getWallet());
// set listeners
srlLoadedWallet.setOnRefreshListener(this::refresh);
imgLookup.setOnClickListener(v15 -> {
if (!mCard.hasBalanceInfo()) return;
CoinEngine engineClick = CoinEngineFactory.Create(mCard.getBlockchain());
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Objects.requireNonNull(engineClick).getShareWalletURIExplorer(mCard));
Intent browserIntent = new Intent(Intent.ACTION_VIEW, engineClick.getShareWalletURIExplorer(mCard));
startActivity(browserIntent);
});
@ -257,7 +240,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
btnLoad.setOnClickListener(v1 -> {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Objects.requireNonNull(CoinEngineFactory.Create(mCard.getBlockchain())).getShareWalletURI(mCard));
Intent intent = new Intent(Intent.ACTION_VIEW, CoinEngineFactory.Create(mCard.getBlockchain()).getShareWalletURI(mCard));
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
} catch (ActivityNotFoundException e) {
@ -269,13 +252,10 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
fabInfo.setOnClickListener(v16 -> {
if (mCardProtocol != null)
openVerifyCard(mCardProtocol);
else {
// scanTimes++;
else
Toast.makeText(getContext(), R.string.need_attach_card_again, Toast.LENGTH_LONG).show();
}
});
fabNFC.setOnClickListener(view -> {
Intent intent = new Intent(getContext(), MainActivity.class);
startActivity(intent);
@ -284,7 +264,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
btnExtract.setOnClickListener(v13 -> {
if (!mCard.hasBalanceInfo()) {
return;
} else if (!Objects.requireNonNull(engine).IsBalanceNotZero(mCard)) {
} else if (!engine.IsBalanceNotZero(mCard)) {
Toast.makeText(getContext(), R.string.wallet_empty, Toast.LENGTH_LONG).show();
return;
} else if (!engine.IsBalanceAlterNotZero(mCard)) {
@ -326,9 +306,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
@Override
public void onStop() {
super.onStop();
// for (AsyncTask ut : updateTasks) {
// ut.cancel(true);
// }
mNfcManager.onStop();
}
@ -398,7 +375,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
else
bundle.putString(PINSwapWarningDialog.EXTRA_MESSAGE, getString(R.string.if_you_use_default));
pinSwapWarningDialog.setArguments(bundle);
pinSwapWarningDialog.show(Objects.requireNonNull(getActivity()).getFragmentManager(), PINSwapWarningDialog.TAG);
pinSwapWarningDialog.show(getActivity().getFragmentManager(), PINSwapWarningDialog.TAG);
}
break;
@ -483,8 +460,8 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
break;
case REQUEST_CODE_SEND_PAYMENT:
if (resultCode == Activity.RESULT_OK) {
mSwipeRefreshLayout.postDelayed(this::onRefresh, 10000);
mSwipeRefreshLayout.setRefreshing(true);
srlLoadedWallet.postDelayed(this::refresh, 10000);
srlLoadedWallet.setRefreshing(true);
mCard.clearInfo();
updateViews();
}
@ -508,12 +485,9 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
}
}
@Override
public void onRefresh() {
// update, showing refresh animation before making http call
// if (updateTasks.size() > 0) return;
mSwipeRefreshLayout.setRefreshing(true);
public void refresh() {
srlLoadedWallet.setRefreshing(true);
mCard.clearInfo();
mCard.setError(null);
mCard.setMessage(null);
@ -526,7 +500,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
if ((mCard.isOnlineVerified() == null || !mCard.isOnlineVerified()) && onlineVerifyTask == null) {
onlineVerifyTask = new OnlineVerifyTask();
// updateTasks.add(onlineVerifyTask);
onlineVerifyTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, VerificationServerProtocol.Verify.prepare(mCard));
}
@ -535,13 +508,12 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
mCard.resetFailedBalanceRequestCounter();
mCard.setIsBalanceEqual(true);
for (int i = 0; i < data.allRequest; ++i) {
String nodeAddress = Objects.requireNonNull(engine).GetNextNode(mCard);
String nodeAddress = engine.GetNextNode(mCard);
int nodePort = engine.GetNextNodePort(mCard);
UpdateWalletInfoTask connectTaskEx = new UpdateWalletInfoTask(LoadedWallet.this, nodeAddress, nodePort, data);
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(mCard.getWallet()));
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(LoadedWallet.this, nodeAddress, nodePort, data);
// updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(mCard.getWallet()));
}
@ -555,20 +527,17 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
SharedData data = new SharedData(SharedData.COUNT_REQUEST);
mCard.setIsBalanceEqual(true);
for (int i = 0; i < data.allRequest; ++i) {
String nodeAddress = Objects.requireNonNull(engine).GetNextNode(mCard);
String nodeAddress = engine.GetNextNode(mCard);
int nodePort = engine.GetNextNodePort(mCard);
UpdateWalletInfoTask connectTaskEx = new UpdateWalletInfoTask(LoadedWallet.this, nodeAddress, nodePort, data);
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(mCard.getWallet()));
}
String nodeAddress = Objects.requireNonNull(engine).GetNode(mCard);
String nodeAddress = engine.GetNode(mCard);
int nodePort = engine.GetNodePort(mCard);
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(LoadedWallet.this, nodeAddress, nodePort, data);
// updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(mCard.getWallet())
// ElectrumRequest.ListHistory(mCard.getWallet())
);
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(LoadedWallet.this, nodeAddress, nodePort, data);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(mCard.getWallet()));
RateInfoTask taskRate = new RateInfoTask(LoadedWallet.this);
ExchangeRequest rate = ExchangeRequest.GetRate(mCard.getWallet(), "bitcoin-cash", "bitcoin-cash");
@ -587,14 +556,13 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
updateETH.execute(reqETH, reqNonce);
RateInfoTask taskRate = new RateInfoTask(LoadedWallet.this);
ExchangeRequest rate = ExchangeRequest.GetRate(mCard.getWallet(), "ethereum", "ethereum");
taskRate.execute(rate);
} else if (mCard.getBlockchain() == Blockchain.Token) {
ETHRequestTask updateETH = new ETHRequestTask(LoadedWallet.this, mCard.getBlockchain());
InfuraRequest reqETH = InfuraRequest.GetTokenBalance(mCard.getWallet(), Objects.requireNonNull(engine).GetContractAddress(mCard), engine.GetTokenDecimals(mCard));
InfuraRequest reqETH = InfuraRequest.GetTokenBalance(mCard.getWallet(), engine.GetContractAddress(mCard), engine.GetTokenDecimals(mCard));
reqETH.setID(67);
reqETH.setBlockchain(mCard.getBlockchain());
@ -613,9 +581,8 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
taskRate.execute(rate);
}
if (needResendTX) {
if (needResendTX)
sendTransaction(LastSignStorage.getTxForSend(mCard.getWallet()));
}
}
@Override
@ -633,11 +600,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
@Override
public void OnReadStart(CardProtocol cardProtocol) {
rlProgressBar.post(() -> {
rlProgressBar.setVisibility(View.VISIBLE);
//progressBar.setVisibility(View.VISIBLE);
// progressBar.setProgress(5);
});
rlProgressBar.post(() -> rlProgressBar.setVisibility(View.VISIBLE));
}
@Override
@ -648,34 +611,20 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
if (cardProtocol.getError() == null) {
rlProgressBar.post(() -> {
rlProgressBar.setVisibility(View.GONE);
// progressBar.setProgress(100);
// progressBar.setProgressTintList(ColorStateList.valueOf(Color.GREEN));
mCardProtocol = cardProtocol;
// Log.i(TAG, "scanTimes " + scanTimes);
// if (scanTimes > 0)
// openVerifyCard(mCardProtocol);
refresh();
// scanTimes++;
onRefresh();
//addCard(cardProtocol.getCard());
});
} else {
// remove last UIDs because of error and no card read
rlProgressBar.post(() -> {
lastReadSuccess = false;
if (cardProtocol.getError() instanceof CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allreadyShowed) {
new NoExtendedLengthSupportDialog().show(Objects.requireNonNull(getActivity()).getFragmentManager(), NoExtendedLengthSupportDialog.TAG);
}
} else {
Toast.makeText(getContext(), R.string.try_to_scan_again, Toast.LENGTH_SHORT).show();
}
// progressBar.setProgress(100);
// progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));
if (cardProtocol.getError() instanceof CardProtocol.TangemException_ExtendedLengthNotSupported)
if (!NoExtendedLengthSupportDialog.allreadyShowed)
new NoExtendedLengthSupportDialog().show(getActivity().getFragmentManager(), NoExtendedLengthSupportDialog.TAG);
else
Toast.makeText(getContext(), R.string.try_to_scan_again, Toast.LENGTH_SHORT).show();
});
}
}
@ -683,9 +632,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
rlProgressBar.postDelayed(() -> {
try {
rlProgressBar.setVisibility(View.GONE);
// progressBar.setProgress(0);
// progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
// progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
@ -694,7 +640,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
@Override
public void OnReadProgress(CardProtocol protocol, final int progress) {
// progressBar.post(() -> progressBar.setProgress(progress));
}
@Override
@ -703,9 +649,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
rlProgressBar.postDelayed(() -> {
try {
rlProgressBar.setVisibility(View.GONE);
// progressBar.setProgress(0);
// progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
// progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
@ -714,17 +657,17 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
@Override
public void OnReadWait(int msec) {
WaitSecurityDelayDialog.OnReadWait(Objects.requireNonNull(getActivity()), msec);
WaitSecurityDelayDialog.OnReadWait(getActivity(), msec);
}
@Override
public void OnReadBeforeRequest(int timeout) {
WaitSecurityDelayDialog.onReadBeforeRequest(Objects.requireNonNull(getActivity()), timeout);
WaitSecurityDelayDialog.onReadBeforeRequest(getActivity(), timeout);
}
@Override
public void OnReadAfterRequest() {
WaitSecurityDelayDialog.onReadAfterRequest(Objects.requireNonNull(getActivity()));
WaitSecurityDelayDialog.onReadAfterRequest(getActivity());
}
public void updateViews() {
@ -750,10 +693,11 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
tvMessage.setVisibility(View.GONE);
} else {
if (needResendTX) {
//tvMessage.setText(R.string.sending_cached_transaction);
} else {
tvMessage.setText(mCard.getMessage());
}
tvMessage.setVisibility(View.VISIBLE);
}
@ -765,7 +709,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
validator.Check(mCard);
tvBalanceLine1.setText(validator.GetFirstLine());
tvBalanceLine2.setText(validator.GetSecondLine());
tvBalanceLine1.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), validator.GetColor()));
tvBalanceLine1.setTextColor(ContextCompat.getColor(getContext(), validator.GetColor()));
}
if (engine.HasBalanceInfo(mCard) || mCard.getOfflineBalance() == null) {
@ -791,7 +735,7 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
}
if (!mCard.getAmountEquivalentDescriptionAvailable()) {
//tvBalanceEquivalent.setError("Service unavailable");
} else {
tvBalanceEquivalent.setError(null);
}
@ -800,11 +744,11 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
tvInputs.setText(mCard.getInputsDescription());
if (mCard.getLastInputDescription().contains("awaiting"))
tvInputs.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.not_confirmed));
tvInputs.setTextColor(ContextCompat.getColor(getContext(), R.color.not_confirmed));
else if (mCard.getLastInputDescription().contains("None"))
tvInputs.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.primary_dark));
tvInputs.setTextColor(ContextCompat.getColor(getContext(), R.color.primary_dark));
else
tvInputs.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.confirmed));
tvInputs.setTextColor(ContextCompat.getColor(getContext(), R.color.confirmed));
tvBlockchain.setText(mCard.getBlockchainName());
@ -862,34 +806,11 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
}
}, 5000);
// if (mCard.isReusable()) {
// tvHeader.setText(R.string.reusable_wallet);
// tvCaution.setVisibility(View.GONE);
// } else {
// if (mCard.getMaxSignatures() == mCard.getRemainingSignatures()) {
// tvHeader.setText(R.string.banknote);
// tvCaution.setVisibility(View.GONE);
// } else {
// tvHeader.setText(R.string.not_transferable_banknote);
// tvCaution.setVisibility(View.VISIBLE);
// }
// }
//
// if (mCard.useDevelopersFirmware()) {
// tvHeader.setText(R.string.developer_kit);
// tvCaution.setVisibility(View.VISIBLE);
// }
} catch (Exception e) {
e.printStackTrace();
}
}
public void errorOnUpdate(String message) {
// mCard.setError(getString(R.string.cannot_obtain_data_from_blockchain));
// updateViews();
}
private void openVerifyCard(CardProtocol cardProtocol) {
Intent intent = new Intent(getContext(), VerifyCardActivity.class);
intent.putExtra("UID", cardProtocol.getCard().getUID());
@ -922,8 +843,6 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
verifyCardTask = new VerifyCardTask(getContext(), mCard, mNfcManager, isoDep, this);
verifyCardTask.start();
// Log.i(TAG, "onTagDiscovered " + Arrays.toString(tag.getId()));
} catch (Exception e) {
e.printStackTrace();
}
@ -932,13 +851,12 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
private void doShareWallet(boolean useURI) {
if (useURI) {
String txtShare = CoinEngineFactory.Create(mCard.getBlockchain()).getShareWalletURI(mCard).toString();
//String txtShare = Blockchain.getShareWalletURI(mCard).toString();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Wallet address");
intent.putExtra(Intent.EXTRA_TEXT, txtShare);
PackageManager packageManager = Objects.requireNonNull(getActivity()).getPackageManager();
PackageManager packageManager = getActivity().getPackageManager();
List activities = packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
boolean isIntentSafe = activities.size() > 0;
@ -954,13 +872,13 @@ public class LoadedWallet extends Fragment implements SwipeRefreshLayout.OnRefre
}
} else {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE);
Objects.requireNonNull(clipboard).setPrimaryClip(ClipData.newPlainText(txtShare, txtShare));
clipboard.setPrimaryClip(ClipData.newPlainText(txtShare, txtShare));
Toast.makeText(getContext(), R.string.copied_clipboard, Toast.LENGTH_LONG).show();
}
} else {
String txtShare = mCard.getWallet();
ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(getActivity()).getSystemService(CLIPBOARD_SERVICE);
Objects.requireNonNull(clipboard).setPrimaryClip(ClipData.newPlainText(txtShare, txtShare));
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText(txtShare, txtShare));
Toast.makeText(getContext(), R.string.copied_clipboard, Toast.LENGTH_LONG).show();
}
}

View file

@ -13,7 +13,7 @@
tools:showIn="@layout/activity_loaded_wallet">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:id="@+id/srlLoadedWallet"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="0dp"