Updated on 2026-08-14

This commit is contained in:
Tangem 2018-10-18 17:26:34 +03:00
parent 1a671525a1
commit 47b75d049b
6 changed files with 104 additions and 131 deletions

View file

@ -102,8 +102,8 @@ public class ServerApiHelper {
private InfuraBodyListener infuraBodyListener;
public interface InfuraBodyListener {
void onInfuraSuccess(String method, InfuraResponse infuraResponse);
void onInfuraFail(String method, String message);
void onSuccess(String method, InfuraResponse infuraResponse);
void onFail(String method, String message);
}
public void setInfuraResponse(InfuraBodyListener listener) {
@ -144,17 +144,17 @@ public class ServerApiHelper {
@Override
public void onResponse(@NonNull Call<InfuraResponse> call, @NonNull Response<InfuraResponse> response) {
if (response.code() == 200) {
infuraBodyListener.onInfuraSuccess(method, response.body());
infuraBodyListener.onSuccess(method, response.body());
Log.i(TAG, "infura " + method + " onResponse " + response.code());
} else {
infuraBodyListener.onInfuraFail(method, String.valueOf(response.code()));
infuraBodyListener.onFail(method, String.valueOf(response.code()));
Log.e(TAG, "infura " + method + " onResponse " + response.code());
}
}
@Override
public void onFailure(@NonNull Call<InfuraResponse> call, @NonNull Throwable t) {
infuraBodyListener.onInfuraFail(method, String.valueOf(t.getMessage()));
infuraBodyListener.onFail(method, String.valueOf(t.getMessage()));
Log.e(TAG, "infura " + method + " onFailure " + t.getMessage());
}
});
@ -255,7 +255,7 @@ public class ServerApiHelper {
private RateInfoDataListener rateInfoDataListener;
public interface RateInfoDataListener {
void onRateInfoDataData(RateInfoResponse rateInfoResponse);
void onSuccess(RateInfoResponse rateInfoResponse);
}
public void setRateInfoData(RateInfoDataListener listener) {
@ -273,7 +273,7 @@ public class ServerApiHelper {
if (!rateInfoModelList.isEmpty()) {
for (RateInfoResponse rateInfoMode : rateInfoModelList) {
if (rateInfoMode.getId().equals(cryptoId)) {
rateInfoDataListener.onRateInfoDataData(rateInfoMode);
rateInfoDataListener.onSuccess(rateInfoMode);
Log.i(TAG, "rateInfoData " + cryptoId + " onResponse " + "200");
}
}

View file

@ -9,7 +9,6 @@ import com.tangem.domain.wallet.Blockchain;
import com.tangem.domain.wallet.TangemCard;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
@ -18,7 +17,6 @@ import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -42,9 +40,8 @@ public class ServerApiHelperElectrum {
private ElectrumRequestDataListener electrumRequestDataListener;
public interface ElectrumRequestDataListener {
void onElectrumSuccess(ElectrumRequest electrumRequest);
void onElectrumFail(String method);
void onSuccess(ElectrumRequest electrumRequest);
void onFail(String method);
}
public void setElectrumRequestData(ElectrumRequestDataListener listener) {
@ -75,16 +72,17 @@ public class ServerApiHelperElectrum {
@Override
public void onNext(ElectrumRequest v) {
if (electrumRequest.answerData != null) {
electrumRequestDataListener.onElectrumSuccess(electrumRequest);
electrumRequestDataListener.onSuccess(electrumRequest);
// Log.i(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onNext != null");
} else {
// electrumRequestDataListener.onElectrumFail(electrumRequest.getMethod());
electrumRequestDataListener.onFail(electrumRequest.getMethod());
Log.e(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onNext == null");
}
}
@Override
public void onError(Throwable e) {
electrumRequestDataListener.onFail(electrumRequest.getMethod());
Log.e(TAG, "electrumRequestData " + electrumRequest.getMethod() + " onError " + e.getMessage());
}
@ -114,7 +112,7 @@ public class ServerApiHelperElectrum {
try {
Socket socket = App.getComponent().getSocket();
socket.connect(new InetSocketAddress(InetAddress.getByName(host), port));
socket.connect(new InetSocketAddress(InetAddress.getByName(host), port));
Log.i(TAG, host + " " + port);
try {
OutputStream os = socket.getOutputStream();
@ -145,7 +143,7 @@ public class ServerApiHelperElectrum {
}
} catch (Exception e) {
e.printStackTrace();
electrumRequestDataListener.onElectrumFail(electrumRequest.getMethod());
electrumRequestDataListener.onFail(electrumRequest.getMethod());
Log.e(TAG, "electrumRequestData " + electrumRequest.getMethod() + " Exception " + e.getMessage());
}
return result;

View file

@ -214,7 +214,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
// request electrum listener
val electrumBodyListener: ServerApiHelperElectrum.ElectrumRequestDataListener = object : ServerApiHelperElectrum.ElectrumRequestDataListener {
override fun onElectrumSuccess(electrumRequest: ElectrumRequest?) {
override fun onSuccess(electrumRequest: ElectrumRequest?) {
if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_GetBalance)) {
try {
etFee!!.setText("--")
@ -236,7 +236,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
}
}
override fun onElectrumFail(message: String?) {
override fun onFail(message: String?) {
}
@ -294,7 +294,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
// request eth gasPrice listener
val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
override fun onInfuraSuccess(method: String, infuraResponse: InfuraResponse) {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
ServerApiHelper.INFURA_ETH_GAS_PRICE -> {
var gasPrice = infuraResponse.result
@ -323,7 +323,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
}
}
override fun onInfuraFail(method: String, message: String) {
override fun onFail(method: String, message: String) {
when (method) {
ServerApiHelper.INFURA_ETH_GAS_PRICE -> {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain))

View file

@ -63,7 +63,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
// request electrum listener
val electrumBodyListener: ServerApiHelperElectrum.ElectrumRequestDataListener = object : ServerApiHelperElectrum.ElectrumRequestDataListener {
override fun onElectrumSuccess(electrumRequest: ElectrumRequest?) {
override fun onSuccess(electrumRequest: ElectrumRequest?) {
if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
try {
var hashTX = electrumRequest.resultString
@ -85,7 +85,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
}
}
override fun onElectrumFail(message: String?) {
override fun onFail(message: String?) {
finishWithError(message!!)
}
}
@ -94,7 +94,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
// request eth sendRawTransaction
val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
override fun onInfuraSuccess(method: String, infuraResponse: InfuraResponse) {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> {
try {
@ -124,7 +124,7 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
}
}
override fun onInfuraFail(method: String, message: String) {
override fun onFail(method: String, message: String) {
when (method) {
ServerApiHelper.INFURA_ETH_SEND_RAW_TRANSACTION -> {
finishWithError(message)

View file

@ -138,13 +138,13 @@ public class WaitSecurityDelayDialog extends DialogFragment {
timerToShowDelayDialog = null;
}
if (msec == 0) {
if (instance != null) {
instance.dismiss();
instance = null;
}
return;
}
// if (msec == 0) {
// if (instance != null) {
// instance.dismiss();
// instance = null;
// }
// return;
// }
if (instance == null) {
if (msec > MinRemainingDelayToShowDialog) {
instance = new WaitSecurityDelayDialog();

View file

@ -217,10 +217,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// request electrum listener
val electrumBodyListener: ServerApiHelperElectrum.ElectrumRequestDataListener = object : ServerApiHelperElectrum.ElectrumRequestDataListener {
override fun onElectrumSuccess(electrumRequest: ElectrumRequest?) {
requestCounter--
if (requestCounter == 0) srl?.isRefreshing = false
override fun onSuccess(electrumRequest: ElectrumRequest?) {
if (electrumRequest!!.isMethod(ElectrumRequest.METHOD_GetBalance)) {
try {
val walletAddress = electrumRequest.params.getString(0)
@ -287,93 +284,18 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
if (requestCounter == 0)
updateViews()
counterMinus()
}
override fun onElectrumFail(method: String?) {
requestCounter--
if (requestCounter == 0) {
srl!!.isRefreshing = false
updateViews()
}
override fun onFail(method: String?) {
}
}
serverApiHelperElectrum.setElectrumRequestData(electrumBodyListener)
// request card verify and get info listener
val cardVerifyAndGetInfoListener: ServerApiHelper.CardVerifyAndGetInfoListener = object : ServerApiHelper.CardVerifyAndGetInfoListener {
override fun onSuccess(cardVerifyAndGetArtworkResponse: CardVerifyAndGetInfo.Response?) {
requestCounter--
if (requestCounter == 0) srl!!.isRefreshing = false
val result = cardVerifyAndGetArtworkResponse?.results!![0]
if (result.error != null) {
card!!.isOnlineVerified = false
return
}
card!!.isOnlineVerified = result.passed
if (requestCounter == 0) updateViews()
if (!result.passed) return
if (localStorage.checkBatchInfoChanged(card!!, result)) {
Log.w(TAG, "Batch ${result.batch} info changed to '$result'")
ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!))
localStorage.applySubstitution(card!!)
if (card!!.blockchain == Blockchain.Token || card!!.blockchain == Blockchain.Ethereum) {
card!!.setBlockchainIDFromCard(Blockchain.Ethereum.id)
}
refresh()
}
if (result.artwork != null && localStorage.checkNeedUpdateArtwork(result.artwork)) {
Log.w(TAG, "Artwork '${result.artwork!!.id}' updated, need download")
serverApiHelper.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), card!!)
updateViews()
}
// Log.i(TAG, "setCardVerify " + it.results!![0].passed)
}
override fun onFail(message: String?) {
requestCounter--
if (requestCounter == 0)
srl!!.isRefreshing = false
}
}
serverApiHelper.setCardVerifyAndGetInfoListener(cardVerifyAndGetInfoListener)
// request artwork listener
val artworkListener: ServerApiHelper.ArtworkListener = object : ServerApiHelper.ArtworkListener {
override fun onSuccess(artworkId: String?, inputStream: InputStream?, updateDate: Date?) {
localStorage.updateArtwork(artworkId!!, inputStream!!, updateDate!!)
ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!))
Log.w(TAG, "Artwork '$artworkId' downloaded")
}
override fun onFail(message: String?) {
}
}
serverApiHelper.setArtworkListener(artworkListener)
// request rate info listener
serverApiHelper.setRateInfoData {
requestCounter--
val rate = it.priceUsd.toFloat()
card!!.rate = rate
card!!.rateAlter = rate
if (requestCounter == 0) {
srl!!.isRefreshing = false
updateViews()
}
}
// request eth get balance, eth get transaction count, eth call, eth sendRawTransaction listener
// request infura listener
val infuraBodyListener: ServerApiHelper.InfuraBodyListener = object : ServerApiHelper.InfuraBodyListener {
override fun onInfuraSuccess(method: String, infuraResponse: InfuraResponse) {
override fun onSuccess(method: String, infuraResponse: InfuraResponse) {
when (method) {
ServerApiHelper.INFURA_ETH_GET_BALANCE -> {
var balanceCap = infuraResponse.result
@ -389,7 +311,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
card!!.decimalBalance = l.toString(10)
card!!.decimalBalanceAlter = l.toString(10)
Log.i("$TAG eth_get_balance", balanceCap)
// Log.i("$TAG eth_get_balance", balanceCap)
}
ServerApiHelper.INFURA_ETH_GET_TRANSACTION_COUNT -> {
@ -474,22 +396,79 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
requestCounter--
if (requestCounter == 0) {
srl!!.isRefreshing = false
updateViews()
}
counterMinus()
}
override fun onInfuraFail(method: String, message: String) {
requestCounter--
if (requestCounter == 0) {
srl!!.isRefreshing = false
updateViews()
}
override fun onFail(method: String, message: String) {
}
}
serverApiHelper.setInfuraResponse(infuraBodyListener)
// request card verify and get info listener
val cardVerifyAndGetInfoListener: ServerApiHelper.CardVerifyAndGetInfoListener = object : ServerApiHelper.CardVerifyAndGetInfoListener {
override fun onSuccess(cardVerifyAndGetArtworkResponse: CardVerifyAndGetInfo.Response?) {
val result = cardVerifyAndGetArtworkResponse?.results!![0]
if (result.error != null) {
card!!.isOnlineVerified = false
return
}
card!!.isOnlineVerified = result.passed
if (requestCounter == 0) updateViews()
if (!result.passed) return
if (localStorage.checkBatchInfoChanged(card!!, result)) {
Log.w(TAG, "Batch ${result.batch} info changed to '$result'")
ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!))
localStorage.applySubstitution(card!!)
if (card!!.blockchain == Blockchain.Token || card!!.blockchain == Blockchain.Ethereum) {
card!!.setBlockchainIDFromCard(Blockchain.Ethereum.id)
}
refresh()
}
if (result.artwork != null && localStorage.checkNeedUpdateArtwork(result.artwork)) {
Log.w(TAG, "Artwork '${result.artwork!!.id}' updated, need download")
serverApiHelper.requestArtwork(result.artwork!!.id, result.artwork!!.getUpdateDate(), card!!)
updateViews()
}
// Log.i(TAG, "setCardVerify " + it.results!![0].passed)
}
override fun onFail(message: String?) {
}
}
serverApiHelper.setCardVerifyAndGetInfoListener(cardVerifyAndGetInfoListener)
// request artwork listener
val artworkListener: ServerApiHelper.ArtworkListener = object : ServerApiHelper.ArtworkListener {
override fun onSuccess(artworkId: String?, inputStream: InputStream?, updateDate: Date?) {
localStorage.updateArtwork(artworkId!!, inputStream!!, updateDate!!)
ivTangemCard.setImageBitmap(localStorage.getCardArtworkBitmap(card!!))
}
override fun onFail(message: String?) {
}
}
serverApiHelper.setArtworkListener(artworkListener)
// request rate info listener
serverApiHelper.setRateInfoData {
val rate = it.priceUsd.toFloat()
card!!.rate = rate
card!!.rateAlter = rate
}
}
private fun counterMinus() {
requestCounter--
if (requestCounter == 0) {
srl!!.isRefreshing = false
updateViews()
}
}
override fun onResume() {
@ -800,7 +779,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
tvWallet.text = card!!.wallet
// tvBlockchain.text = card!!.blockchainName
if (card!!.tokenSymbol.length > 1) {
@ -885,7 +863,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
Toast.makeText(activity!!, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()
srl!!.isRefreshing = false
}
}
private fun requestInfura(method: String, contract: String) {
@ -901,7 +878,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private fun requestVerifyAndGetInfo() {
if (UtilHelper.isOnline(activity)) {
if ((card!!.isOnlineVerified == null || !card!!.isOnlineVerified)) {
// requestCounter++
serverApiHelper.cardVerifyAndGetInfo(card)
}
} else {
@ -912,7 +888,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
private fun requestRateInfo(cryptoId: String) {
if (UtilHelper.isOnline(activity)) {
requestCounter++
serverApiHelper.rateInfoData(cryptoId)
} else {
Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show()