diff --git a/app/src/main/java/com/tangem/data/network/request/ElectrumRequest.java b/app/src/main/java/com/tangem/data/network/request/ElectrumRequest.java index 20428290b8..a1dc3395fe 100644 --- a/app/src/main/java/com/tangem/data/network/request/ElectrumRequest.java +++ b/app/src/main/java/com/tangem/data/network/request/ElectrumRequest.java @@ -96,18 +96,6 @@ public class ElectrumRequest { return request; } - public static ElectrumRequest getHeader(String wallet, String height) { - ElectrumRequest request = new ElectrumRequest(); - try { - request.walletAddress = wallet; - request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHeader + "\", \"params\":[\"" + height + "\"] }"); - } catch (JSONException e) { - e.printStackTrace(); - request.error = e.toString(); - } - return request; - } - public static ElectrumRequest listUnspent(String wallet) { ElectrumRequest request = new ElectrumRequest(); try { @@ -133,18 +121,6 @@ public class ElectrumRequest { return request; } - public static ElectrumRequest listHistory(String wallet) { - ElectrumRequest request = new ElectrumRequest(); - try { - request.walletAddress = wallet; - request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHistory + "\", \"params\":[\"" + wallet + "\"] }"); - } catch (JSONException e) { - e.printStackTrace(); - request.error = e.toString(); - } - return request; - } - public static ElectrumRequest getTransaction(String wallet, String tx_hash) { ElectrumRequest request = new ElectrumRequest(); try { diff --git a/app/src/main/java/com/tangem/data/network/task/loaded_wallet/ETHRequestTask.java b/app/src/main/java/com/tangem/data/network/task/loaded_wallet/ETHRequestTask.java index 7f9f157976..4354b589da 100644 --- a/app/src/main/java/com/tangem/data/network/task/loaded_wallet/ETHRequestTask.java +++ b/app/src/main/java/com/tangem/data/network/task/loaded_wallet/ETHRequestTask.java @@ -5,7 +5,6 @@ import android.util.Log; import com.tangem.data.network.request.InfuraRequest; import com.tangem.data.network.task.InfuraTask; import com.tangem.domain.wallet.Blockchain; -import com.tangem.domain.wallet.LastSignStorage; import com.tangem.presentation.fragment.LoadedWallet; import org.json.JSONException; @@ -92,7 +91,6 @@ public class ETHRequestTask extends InfuraTask { JSONObject msg = request.getAnswer(); JSONObject err = msg.getJSONObject("error"); hashTX = err.getString("message"); - LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX); return; } @@ -100,8 +98,6 @@ public class ETHRequestTask extends InfuraTask { hashTX = hashTX.substring(2); } BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ - LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet()); - LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), ""); Log.e("TX_RESULT", hashTX); diff --git a/app/src/main/java/com/tangem/data/network/task/loaded_wallet/UpdateWalletInfoTask.java b/app/src/main/java/com/tangem/data/network/task/loaded_wallet/UpdateWalletInfoTask.java index 476c025081..103dc17c67 100644 --- a/app/src/main/java/com/tangem/data/network/task/loaded_wallet/UpdateWalletInfoTask.java +++ b/app/src/main/java/com/tangem/data/network/task/loaded_wallet/UpdateWalletInfoTask.java @@ -1,18 +1,14 @@ package com.tangem.data.network.task.loaded_wallet; import android.os.AsyncTask; -import android.util.Log; import com.tangem.data.network.request.ElectrumRequest; import com.tangem.data.network.task.ElectrumTask; -import com.tangem.domain.wallet.BitcoinException; import com.tangem.domain.wallet.CoinEngine; import com.tangem.domain.wallet.CoinEngineFactory; -import com.tangem.domain.wallet.LastSignStorage; import com.tangem.domain.wallet.SharedData; import com.tangem.domain.wallet.TangemCard; import com.tangem.presentation.fragment.LoadedWallet; -import com.tangem.util.BTCUtils; import org.json.JSONArray; import org.json.JSONException; @@ -20,8 +16,6 @@ import org.json.JSONObject; import java.lang.ref.WeakReference; import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; import java.util.List; public class UpdateWalletInfoTask extends ElectrumTask { @@ -103,17 +97,6 @@ public class UpdateWalletInfoTask extends ElectrumTask { else if (request.isMethod(ElectrumRequest.METHOD_SendTransaction)) { try { String hashTX = request.getResultString(); - try { - LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX); - if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) - hashTX = hashTX.substring(2); - BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ - LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet()); - LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), ""); -// Log.e("TX_RESULT", hashTX); - } catch (Exception e) { - engine.switchNode(loadedWallet.getCard()); - } } catch (JSONException e) { e.printStackTrace(); engine.switchNode(loadedWallet.getCard()); @@ -150,7 +133,7 @@ public class UpdateWalletInfoTask extends ElectrumTask { engine.switchNode(loadedWallet.getCard()); UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort); // loadedWallet.updateTasks.add(updateWalletInfoTask); - updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash)); + updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getTransaction(mWalletAddress, hash)); } } } catch (JSONException e) { @@ -159,61 +142,6 @@ public class UpdateWalletInfoTask extends ElectrumTask { } } - // get history - else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) { - try { - String mWalletAddress = request.getParams().getString(0); - JSONArray jsHistoryArray = request.getResultArray(); - try { - loadedWallet.getCard().getHistoryTransactions().clear(); - for (int i = 0; i < jsHistoryArray.length(); i++) { - JSONObject jsUnspent = jsHistoryArray.getJSONObject(i); - TangemCard.HistoryTransaction trHistory = new TangemCard.HistoryTransaction(); - trHistory.txID = jsUnspent.getString("tx_hash"); - trHistory.Height = jsUnspent.getInt("height"); - loadedWallet.getCard().getHistoryTransactions().add(trHistory); - } - } catch (JSONException e) { - e.printStackTrace(); - engine.switchNode(loadedWallet.getCard()); - } - - for (int i = 0; i < jsHistoryArray.length(); i++) { - JSONObject jsUnspent = jsHistoryArray.getJSONObject(i); - Integer height = jsUnspent.getInt("height"); - String hash = jsUnspent.getString("tx_hash"); - if (height != -1) { - String nodeAddress = engine.getNode(loadedWallet.getCard()); - int nodePort = engine.getNodePort(loadedWallet.getCard()); - engine.switchNode(loadedWallet.getCard()); - UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort); -// loadedWallet.updateTasks.add(updateWalletInfoTask); - updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash)); - } - } - } catch (JSONException e) { - e.printStackTrace(); - engine.switchNode(loadedWallet.getCard()); - } - } - - // get header - else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) { - try { - JSONObject jsHeader = request.getResult(); - try { - loadedWallet.getCard().getHaedersInfo(); - loadedWallet.getCard().UpdateHeaderInfo(new TangemCard.HeaderInfo(jsHeader.getInt("block_height"), jsHeader.getInt("timestamp"))); - } catch (JSONException e) { - e.printStackTrace(); - engine.switchNode(loadedWallet.getCard()); - } - } catch (JSONException e) { - e.printStackTrace(); - engine.switchNode(loadedWallet.getCard()); - } - } - // get transaction else if (request.isMethod(ElectrumRequest.METHOD_GetTransaction)) { try { @@ -224,27 +152,6 @@ public class UpdateWalletInfoTask extends ElectrumTask { if (tx.txID.equals(txHash)) tx.Raw = raw; } - List listHTx = loadedWallet.getCard().getHistoryTransactions(); - for (TangemCard.HistoryTransaction tx : listHTx) { - if (tx.txID.equals(txHash)) { - tx.Raw = raw; - try { - ArrayList prevHashes = BTCUtils.getPrevTX(raw); - boolean isOur = false; - for (byte[] hash : prevHashes) { - String checkID = BTCUtils.toHex(hash); - for (TangemCard.HistoryTransaction txForCheck : listHTx) { - if (txForCheck.txID.equals(checkID)) - isOur = true; - } - } - tx.isInput = !isOur; - } catch (BitcoinException e) { - e.printStackTrace(); - } - Log.e("TX", raw); - } - } } catch (JSONException e) { e.printStackTrace(); engine.switchNode(loadedWallet.getCard()); diff --git a/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java b/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java index 57607c44c7..65403b7163 100644 --- a/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java +++ b/app/src/main/java/com/tangem/data/network/task/send_transaction/ConnectTask.java @@ -7,7 +7,6 @@ import com.tangem.data.network.task.ElectrumTask; import com.tangem.domain.wallet.Blockchain; import com.tangem.domain.wallet.CoinEngine; import com.tangem.domain.wallet.CoinEngineFactory; -import com.tangem.domain.wallet.LastSignStorage; import com.tangem.domain.wallet.SharedData; import com.tangem.domain.wallet.TangemCard; import com.tangem.presentation.activity.SendTransactionActivity; @@ -81,13 +80,9 @@ public class ConnectTask extends ElectrumTask { String hashTX = request.getResultString(); try { - LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), hashTX); if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2); } - BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ - LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet()); - LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), ""); Log.e("TX_RESULT", hashTX); sendTransactionActivity.finishWithSuccess(); } catch (Exception e) { diff --git a/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java b/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java index 5c99db264c..a996ff66b5 100644 --- a/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java +++ b/app/src/main/java/com/tangem/data/network/task/send_transaction/ETHRequestTask.java @@ -5,7 +5,6 @@ import android.util.Log; import com.tangem.data.network.request.InfuraRequest; import com.tangem.data.network.task.InfuraTask; import com.tangem.domain.wallet.Blockchain; -import com.tangem.domain.wallet.LastSignStorage; import com.tangem.presentation.activity.SendTransactionActivity; import org.json.JSONException; @@ -41,7 +40,6 @@ public class ETHRequestTask extends InfuraTask { JSONObject msg = request.getAnswer(); JSONObject err = msg.getJSONObject("error"); hashTX = err.getString("message"); - LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), hashTX); Log.e("Send_TX_Error:", hashTX); sendTransactionActivity.finishWithError(hashTX); return; @@ -51,9 +49,6 @@ public class ETHRequestTask extends InfuraTask { if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2); } - BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ - LastSignStorage.setTxWasSend(sendTransactionActivity.getCard().getWallet()); - LastSignStorage.setLastMessage(sendTransactionActivity.getCard().getWallet(), ""); BigInteger nonce = sendTransactionActivity.getCard().getConfirmedTXCount(); nonce.add(BigInteger.valueOf(1)); sendTransactionActivity.getCard().setConfirmedTXCount(nonce); diff --git a/app/src/main/java/com/tangem/domain/wallet/BtcCashEngine.java b/app/src/main/java/com/tangem/domain/wallet/BtcCashEngine.java index d06f729f4c..15a3445e8e 100644 --- a/app/src/main/java/com/tangem/domain/wallet/BtcCashEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/BtcCashEngine.java @@ -369,9 +369,6 @@ public class BtcCashEngine extends CoinEngine { // TODO slice signFromCard to hashes.length parts } - LastSignStorage.setLastSignDate(mCard.getWallet(), new Date()); - - for (int i = 0; i < unspentOutputs.size(); ++i) { BigInteger r = new BigInteger(1, Arrays.copyOfRange(signFromCard, 0 + i * 64, 32 + i * 64)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(signFromCard, 32 + i * 64, 64 + i * 64)); diff --git a/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java b/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java index 052cab802b..9a8e0d1dde 100644 --- a/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/BtcEngine.java @@ -417,9 +417,6 @@ public class BtcEngine extends CoinEngine { // TODO slice signFromCard to hashes.length parts } - LastSignStorage.setLastSignDate(mCard.getWallet(), new Date()); - - for (int i = 0; i < unspentOutputs.size(); ++i) { BigInteger r = new BigInteger(1, Arrays.copyOfRange(signFromCard, 0 + i * 64, 32 + i * 64)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(signFromCard, 32 + i * 64, 64 + i * 64)); diff --git a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java index e44f96c54d..7095e46d0c 100644 --- a/app/src/main/java/com/tangem/domain/wallet/EthEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/EthEngine.java @@ -357,8 +357,6 @@ public class EthEngine extends CoinEngine { return null; } - LastSignStorage.setLastSignDate(mCard.getWallet(), new Date()); - BigInteger r = new BigInteger(1, Arrays.copyOfRange(signFromCard, 0, 32)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(signFromCard, 32, 64)); s = CryptoUtil.toCanonicalised(s); diff --git a/app/src/main/java/com/tangem/domain/wallet/LastSignStorage.java b/app/src/main/java/com/tangem/domain/wallet/LastSignStorage.java deleted file mode 100644 index 3f134149df..0000000000 --- a/app/src/main/java/com/tangem/domain/wallet/LastSignStorage.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.tangem.domain.wallet; - -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.util.ArrayMap; -import android.util.ArraySet; - -import java.util.Date; -import java.util.Map; -import java.util.Set; - -/** - * Created by dvol on 30.10.2017. - */ - -public class LastSignStorage { - - private static SharedPreferences sharedPreferences=null; - - private static Set cards = new ArraySet<>(); - private static Map dates = new ArrayMap<>(); - private static Map txCol = new ArrayMap<>(); - private static Map txCompleteCol = new ArrayMap<>(); - - public static void Init(Context context) { - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); - cards=sharedPreferences.getStringSet("LastSign_Cards", cards); - for (int i = 0; i < cards.size(); i++) { - String wallet = cards.toArray()[i].toString(); - Date dt = new Date(); - dt.setTime(sharedPreferences.getLong("LastSign_" + wallet, 0)); - dates.put(wallet, dt); - } - } - - public static boolean needInit() { - return sharedPreferences==null; - } - - static class CompleteTx - { - public String TX; - public boolean isComplete; - } - public static Map GetTxList() - { - Set wallets=sharedPreferences.getStringSet("LastSign_Cards", cards); - Map txList = new ArrayMap<>(); - - for (int i = 0; i < wallets.size(); i++) { - String wallet = wallets.toArray()[i].toString(); - String tx = sharedPreferences.getString("LastSignTX_" + wallet, ""); - boolean complete = sharedPreferences.getBoolean("LastSignTXComplete_" + wallet, false); - CompleteTx txComplete = new CompleteTx(); - txComplete.isComplete = complete; - txComplete.TX = tx; - txList.put(wallet, txComplete); - } - - return txList; - } - public static Date getLastSignDate(String wallet) { - if (dates.containsKey(wallet)) return dates.get(wallet); - return null; - } - - public static void setLastSignDate(String wallet, Date date) { - SharedPreferences.Editor editor = sharedPreferences.edit(); - if (!cards.contains(wallet)) { - cards.add(wallet); - editor.putStringSet("LastSign_Cards", cards); - } - dates.put(wallet, date); - editor.putLong("LastSign_" + wallet, date.getTime()); - editor.apply(); - } - - public static void setLastTX(String wallet, String tx) { - SharedPreferences.Editor editor = sharedPreferences.edit(); - if (!cards.contains(wallet)) { - cards.add(wallet); - editor.putStringSet("LastSign_Cards", cards); - } - - editor.putString("LastSignTX_" + wallet, tx); - editor.putBoolean("LastSignTXComplete_" + wallet, false); - editor.apply(); - } - - public static void setLastMessage(String wallet, String message) { - SharedPreferences.Editor editor = sharedPreferences.edit(); - if (!cards.contains(wallet)) { - cards.add(wallet); - editor.putStringSet("LastSign_Cards", cards); - } - - editor.putString("LastSignMessage_" + wallet, message); - editor.apply(); - } - - public static String getLastMessage(String wallet) - { - try { - String msg = sharedPreferences.getString("LastSignMessage_" + wallet, ""); - return msg; - } - catch(Exception e) - { - return ""; - } - } - - public static void setTxWasSend(String wallet) - { - - Map txList = GetTxList(); - if(txList.containsKey(wallet)) - { - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putBoolean("LastSignTXComplete_" + wallet, true); - editor.apply(); - } - } - public static boolean getNeedTxSend(String wallet) - { - Map txList = GetTxList(); - if(txList.containsKey(wallet)) - { - boolean complete = txList.get(wallet).isComplete; - return !complete; - } - return false; - } - - public static String getTxForSend(String wallet) - { - Map txList = GetTxList(); - if(txList.containsKey(wallet)) - { - return txList.get(wallet).TX; - } - return ""; - } -} diff --git a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java index 1caa944b5c..da05cd429d 100644 --- a/app/src/main/java/com/tangem/domain/wallet/TangemCard.java +++ b/app/src/main/java/com/tangem/domain/wallet/TangemCard.java @@ -272,83 +272,6 @@ public class TangemCard { this.remainingSignatures = remainingSignatures; } - - public int getCountOutputs() { - int count = 0; - for (int i = 0; i < mHistoryTransactions.size(); ++i) { - if (mHistoryTransactions.get(i).isInput) - continue; - ++count; - } - return count; - } - - static int UNIX_TIME_2017_01_01 = 1483228800; - - public String getLastInputDescription() { - - if (hasUnspentInfo()) { - if (mUnspentTransactions.size() > 0) { - - long maxUDT = 0; - int UnspentTransactionsAmount = 0; - - for (int i = 0; i < mUnspentTransactions.size(); ++i) { - UnspentTransactionsAmount += mUnspentTransactions.get(i).Amount; - long unix_time = GetTimestamp(mUnspentTransactions.get(i).Height); - - if (unix_time < UNIX_TIME_2017_01_01) { - return "-- -- --"; - } - unix_time = unix_time * 1000L; - if (unix_time > maxUDT) maxUDT = unix_time; - } - - Calendar cd = Calendar.getInstance(); - cd.setTimeInMillis(maxUDT); - - StringBuilder sb = new StringBuilder(); - //sb.append(String.format("%02d/%02d/%04d %02d:%02d:%02d", cd.get(Calendar.DAY_OF_MONTH), cd.get(Calendar.MONTH) + 1, cd.get(Calendar.YEAR), cd.get(Calendar.HOUR), cd.get(Calendar.MINUTE), cd.get(Calendar.SECOND))); - sb.append(Util.formatDateTime(new Date(maxUDT))); - - if (balanceUnconfirmed != null && balanceUnconfirmed != 0) { - return "awaiting confirmation..."; - } - return sb.toString(); - - } else { - if (balanceUnconfirmed != null) { - if (balanceUnconfirmed != 0) { - return "awaiting confirmation..."; - } else { - return "-- -- --"; - } - } - } - } - return "-- -- --"; - - } - - private int indexfOfUnspentTransaction(String txID) { - if (hasUnspentInfo()) { - for (int i = 0; i < mUnspentTransactions.size(); i++) { - if (mUnspentTransactions.get(i).txID.equals(txID)) return i; - } - } - return -1; - } - - public String getLastSignedDescription() { - Date dt = LastSignStorage.getLastSignDate(getWallet()); - if (dt != null) { - return Util.formatDateTime(dt); - - } else { - return "Not supported"; - } - } - public String getPIN() { return PIN; } @@ -361,7 +284,6 @@ public class TangemCard { balanceConfirmed = null; balanceUnconfirmed = null; mUnspentTransactions = null; - mHistoryTransactions = null; balanceDecimal = null; balanceDecimalAlter = null; setIsBalanceEqual(false); @@ -709,32 +631,6 @@ public class TangemCard { return signingMethod; } - public static class HeaderInfo { - public HeaderInfo() { - - } - - public HeaderInfo(Integer height, Integer timestamp) { - Height = height; - TmStamp = timestamp; - } - - public Integer TmStamp; - public Integer Height; - - public Bundle getAsBundle() { - Bundle B = new Bundle(); - B.putInt("TmStamp", TmStamp); - B.putInt("Height", Height); - return B; - } - - public void LoadFromBundle(Bundle B) { - TmStamp = B.getInt("TmStamp"); - Height = B.getInt("Height"); - } - } - public static class UnspentTransaction { public String txID; public Integer Amount; @@ -759,130 +655,13 @@ public class TangemCard { } } - public static int CountOurTx(List listHTx) { - int count = 0; - for (HistoryTransaction tx : listHTx) { - - if (tx.Raw == null) - continue; - - String raw = tx.Raw; - //Log.e("H", tx.txID + " - ?"); - try { - ArrayList prevHashes = BTCUtils.getPrevTX(raw); - - boolean isOur = false; - for (byte[] hash : prevHashes) { - String checkID = BTCUtils.toHex(hash); - - for (HistoryTransaction txForCheck : listHTx) { - String id = txForCheck.txID; - //Log.e("H:", checkID + " - " + id); - if (id.equals(checkID)) { - isOur = true; - //Log.e("H", tx.txID + " - Complete"); - break; - } - } - if (isOur) { - ++count; - break; - } - } - - tx.isInput = !isOur; - } catch (BitcoinException e) { - e.printStackTrace(); - } - } - return count; - } - - public static class HistoryTransaction { - public String txID; - public Integer Height; - public String Raw = ""; - public boolean isInput = false; - - public Bundle getAsBundle() { - Bundle B = new Bundle(); - B.putString("txID", txID); - B.putInt("Height", Height); - B.putString("Raw", Raw); - B.putBoolean("Input", isInput); - return B; - } - - public void LoadFromBundle(Bundle B) { - txID = B.getString("txID"); - Height = B.getInt("Height"); - Raw = B.getString("Raw"); - isInput = B.getBoolean("Input"); - } - } - private List mUnspentTransactions = null; - private List mHistoryTransactions = null; - private List mHeaders = null; public List getUnspentTransactions() { if (mUnspentTransactions == null) mUnspentTransactions = new ArrayList<>(); return mUnspentTransactions; } - public boolean hasUnspentInfo() { - return mUnspentTransactions != null; - } - - public List getHistoryTransactions() { - if (mHistoryTransactions == null) mHistoryTransactions = new ArrayList<>(); - return mHistoryTransactions; - } - - public List getOutputTransactions() { - if (mHistoryTransactions == null) mHistoryTransactions = new ArrayList<>(); - return mHistoryTransactions; - } - - public boolean hasHistoryInfo() { - return mHistoryTransactions != null; - } - - public List getHaedersInfo() { - if (mHeaders == null) mHeaders = new ArrayList<>(); - return mHeaders; - } - - public void UpdateHeaderInfo(HeaderInfo info) { - boolean newItem = true; - for (int i = 0; i < mHeaders.size(); ++i) { - if (mHeaders.get(i).Height == info.Height) { - newItem = false; - break; - } - } - - if (newItem) { - mHeaders.add(info); - } - } - - public int GetTimestamp(int height) { - if (mHeaders == null) - return 0; - for (int i = 0; i < mHeaders.size(); ++i) { - if (mHeaders.get(i).Height == height) { - return mHeaders.get(i).TmStamp; - } - } - - return 0; - } - - public boolean hasHeaderInfo() { - return mHeaders != null; - } - public TangemCard(String UID) { this.UID = UID; } @@ -1154,20 +933,6 @@ public class TangemCard { } B.putBundle("UnspentTransactions", BB); } - if (mHeaders != null) { - Bundle BB = new Bundle(); - for (Integer i = 0; i < mHeaders.size(); i++) { - BB.putBundle(i.toString(), mHeaders.get(i).getAsBundle()); - } - B.putBundle("Headers", BB); - } - if (mHistoryTransactions != null) { - Bundle BB = new Bundle(); - for (Integer i = 0; i < mHistoryTransactions.size(); i++) { - BB.putBundle(i.toString(), mHistoryTransactions.get(i).getAsBundle()); - } - B.putBundle("HistoryTransactions", BB); - } B.putFloat("rate", rate); B.putFloat("rateAlter", rateAlter); B.putString("confirmTx", getConfirmedTXCount().toString(16)); @@ -1301,28 +1066,6 @@ public class TangemCard { i++; } } - if (B.containsKey("Headers")) { - mHeaders = new ArrayList<>(); - Bundle BB = B.getBundle("Headers"); - Integer i = 0; - while (BB.containsKey(i.toString())) { - HeaderInfo t = new HeaderInfo(); - t.LoadFromBundle(BB.getBundle(i.toString())); - mHeaders.add(t); - i++; - } - } - if (B.containsKey("HistoryTransactions")) { - mHistoryTransactions = new ArrayList<>(); - Bundle BB = B.getBundle("HistoryTransactions"); - Integer i = 0; - while (BB.containsKey(i.toString())) { - HistoryTransaction t = new HistoryTransaction(); - t.LoadFromBundle(BB.getBundle(i.toString())); - mHistoryTransactions.add(t); - i++; - } - } if (B.containsKey("rate")) rate = B.getFloat("rate"); if (B.containsKey("rateAlter")) diff --git a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java index 88ba399d7c..e6e123be10 100644 --- a/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java +++ b/app/src/main/java/com/tangem/domain/wallet/TokenEngine.java @@ -399,8 +399,6 @@ public class TokenEngine extends CoinEngine { return null; } - LastSignStorage.setLastSignDate(mCard.getWallet(), new Date()); - BigInteger r = new BigInteger(1, Arrays.copyOfRange(signFromCard, 0, 32)); BigInteger s = new BigInteger(1, Arrays.copyOfRange(signFromCard, 32, 64)); s = CryptoUtil.toCanonicalised(s); diff --git a/app/src/main/java/com/tangem/domain/wallet/UnspentOutputInfo.java b/app/src/main/java/com/tangem/domain/wallet/UnspentOutputInfo.java index a9d12d0170..ddd4b2a113 100644 --- a/app/src/main/java/com/tangem/domain/wallet/UnspentOutputInfo.java +++ b/app/src/main/java/com/tangem/domain/wallet/UnspentOutputInfo.java @@ -5,7 +5,7 @@ package com.tangem.domain.wallet; */ @SuppressWarnings("WeakerAccess") -public class UnspentOutputInfo { +public class UnspentOutputInfo { public final byte[] txHash; public final Transaction.Script script; public final long value; diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt index 8ca24706d1..4b69f16880 100644 --- a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt @@ -222,7 +222,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } if (!engineCoin.checkAmountValue(card, txAmount, txFee, minFeeInInternalUnits, isIncludeFee)) { - finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.not_enough_funds_or_incorrect_amount)) + finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.not_enough_funds_on_your_card)) return@setOnClickListener } @@ -344,7 +344,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { override fun onInfuraFail(method: String, message: String) { when (method) { ServerApiHelper.INFURA_ETH_GAS_PRICE -> { - + finishActivityWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_obtain_data_from_blockchain)) } else -> { diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt index 1072151477..757f10f7f7 100644 --- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt @@ -57,9 +57,6 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco if (PINStorage.needInit()) PINStorage.Init(context) - if (LastSignStorage.needInit()) - LastSignStorage.Init(context) - if (Issuer.needInit()) Issuer.Init(context) diff --git a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt index 87cc3ad71c..6d2b5a2dbe 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/SendTransactionActivity.kt @@ -14,7 +14,6 @@ import com.tangem.data.network.request.ElectrumRequest import com.tangem.domain.cardReader.NfcManager import com.tangem.domain.wallet.Blockchain import com.tangem.domain.wallet.CoinEngineFactory -import com.tangem.domain.wallet.LastSignStorage import com.tangem.domain.wallet.TangemCard import com.tangem.wallet.R import org.json.JSONException @@ -70,13 +69,9 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback var hashTX = it.resultString try { - LastSignStorage.setLastMessage(card!!.wallet, hashTX) if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2) } - val bigInt = BigInteger(hashTX, 16) //TODO: очень плохой способ - LastSignStorage.setTxWasSend(card!!.wallet) - LastSignStorage.setLastMessage(card!!.wallet, "") Log.e("TX_RESULT", hashTX) finishWithSuccess() } catch (e: Exception) { @@ -104,20 +99,12 @@ class SendTransactionActivity : AppCompatActivity(), NfcAdapter.ReaderCallback val tmp = infuraResponse.result hashTX = tmp } catch (e: JSONException) { -// val msg = request.getAnswer() -// val err = msg!!.getJSONObject("error") -// hashTX = err.getString("message") -// LastSignStorage.setLastMessage(card!!.wallet, hashTX) return } if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2) } - val bigInt = BigInteger(hashTX, 16) //TODO: очень плохой способ - LastSignStorage.setTxWasSend(card!!.wallet) - LastSignStorage.setLastMessage(card!!.wallet, "") -// Log.e("TX_RESULT", hashTX) val nonce = card!!.confirmedTXCount diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index dd5d87bbf3..3c213e0ecb 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -203,7 +203,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } else if (!engine.isBalanceNotZero(card)) showSingleToast(R.string.wallet_empty) else if (!engine.isBalanceAlterNotZero(card)) - showSingleToast(R.string.not_enough_funds_or_incorrect_amount) + showSingleToast(R.string.not_enough_eth_for_gas) else if (engine.awaitingConfirmation(card)) showSingleToast(R.string.please_wait_while_previous) else if (!engine.checkUnspentTransaction(card)) @@ -263,7 +263,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific val height = jsUnspent.getInt("height") val hash = jsUnspent.getString("tx_hash") if (height != -1) { - requestElectrum(card!!, ElectrumRequest.getHeader(walletAddress, height.toString())) requestElectrum(card!!, ElectrumRequest.getTransaction(walletAddress, hash)) } } @@ -272,20 +271,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } } - if (it.isMethod(ElectrumRequest.METHOD_GetHeader)) { - try { - val jsHeader = it.result - try { - card!!.haedersInfo - card!!.UpdateHeaderInfo(TangemCard.HeaderInfo(jsHeader.getInt("block_height"), jsHeader.getInt("timestamp"))) - } catch (e: JSONException) { - e.printStackTrace() - } - } catch (e: JSONException) { - e.printStackTrace() - } - } - if (it.isMethod(ElectrumRequest.METHOD_GetTransaction)) { try { val txHash = it.txHash @@ -295,47 +280,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (tx.txID == txHash) tx.Raw = raw } - val listHTx = card!!.historyTransactions - for (tx in listHTx) { - if (tx.txID == txHash) { - tx.Raw = raw - try { - val prevHashes = BTCUtils.getPrevTX(raw) - var isOur = false - for (hash in prevHashes) { - val checkID = BTCUtils.toHex(hash) - for (txForCheck in listHTx) { - if (txForCheck.txID == checkID) - isOur = true - } - } - tx.isInput = !isOur - } catch (e: BitcoinException) { - e.printStackTrace() - } - } - } } catch (e: JSONException) { e.printStackTrace() } } if (it.isMethod(ElectrumRequest.METHOD_SendTransaction)) { - try { - var hashTX = it.resultString - try { - LastSignStorage.setLastMessage(card!!.wallet, hashTX) - if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) - hashTX = hashTX.substring(2) - val bigInt = BigInteger(hashTX, 16) //TODO: очень плохой способ - LastSignStorage.setTxWasSend(card!!.wallet) - LastSignStorage.setLastMessage(card!!.wallet, "") - } catch (e: Exception) { - e.printStackTrace() - } - } catch (e: JSONException) { - e.printStackTrace() - } + } if (requestCounter == 0) updateViews() @@ -384,11 +335,12 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific // request rate info listener serverApiHelper!!.setRateInfoData { + + requestCounter-- val rate = it.priceUsd.toFloat() card!!.rate = rate card!!.rateAlter = rate - requestCounter-- if (requestCounter == 0) { srlLoadedWallet!!.isRefreshing = false updateViews() @@ -484,9 +436,6 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) { hashTX = hashTX.substring(2) } - val bigInt = BigInteger(hashTX, 16) //TODO: очень плохой способ - LastSignStorage.setTxWasSend(card!!.wallet) - LastSignStorage.setLastMessage(card!!.wallet, "") Log.e("$TAG TX_RESULT", hashTX) @@ -532,7 +481,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific private fun requestInfura(method: String, contract: String) { requestCounter++ - serverApiHelper!!.infura(method, 67, card!!.wallet, contract, LastSignStorage.getTxForSend(card!!.wallet)) + serverApiHelper!!.infura(method, 67, card!!.wallet, contract, "") } private fun requestCardVerify() { diff --git a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt index c098f8ff0c..69ccb6e8b4 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt @@ -290,12 +290,6 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { tvBlockchain.text = card!!.blockchainName tvValidationNode.text = card!!.validationNodeDescription - when { - card!!.lastInputDescription.contains("awaiting") -> tvInputs.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) - card!!.lastInputDescription.contains("None") -> tvInputs.setTextColor(ContextCompat.getColor(context!!, R.color.primary_dark)) - else -> tvInputs.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed)) - } - ivBlockchain.setImageResource(card!!.blockchain.getLogoImageResource(card!!.blockchainID, card!!.tokenSymbol)) if (card!!.isReusable!!) @@ -307,7 +301,6 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { if (card!!.status == TangemCard.Status.Loaded || card!!.status == TangemCard.Status.Purged) { - tvLastSigned.text = card!!.lastSignedDescription when { card!!.remainingSignatures == 0 -> { tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) diff --git a/app/src/main/res/layout/activity_confirm_payment.xml b/app/src/main/res/layout/activity_confirm_payment.xml index ceb96508b6..143db52d65 100644 --- a/app/src/main/res/layout/activity_confirm_payment.xml +++ b/app/src/main/res/layout/activity_confirm_payment.xml @@ -106,6 +106,7 @@ android:fontFamily="@font/maax" android:hint="@string/target_wallet_address" android:inputType="text" + android:maxLines="2" android:padding="12dp" android:textColor="@color/black" android:textSize="@dimen/text_size_1_small" @@ -265,7 +266,6 @@ android:layout_marginBottom="4dp" android:enabled="false" android:fontFamily="@font/maax" - android:hint="@string/fee" android:inputType="numberDecimal" android:padding="12dp" android:textColor="@color/black" diff --git a/app/src/main/res/layout/fr_loaded_wallet.xml b/app/src/main/res/layout/fr_loaded_wallet.xml index 958d007176..ac06eec925 100644 --- a/app/src/main/res/layout/fr_loaded_wallet.xml +++ b/app/src/main/res/layout/fr_loaded_wallet.xml @@ -106,7 +106,6 @@ android:layout_height="wrap_content" android:layout_weight="3" android:fontFamily="@font/maaxmedium" - android:text="@string/no_data_string" android:textAlignment="center" android:textColor="@color/black" android:textSize="@dimen/text_size_large" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e06fb2dbc..5172b2e2f8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -157,7 +157,7 @@ Amount and fee exceed total wallet balance! - Not enough funds on your card + Not enough funds Unknown amount format Incorrect destination wallet address Destination wallet address equal source address @@ -181,7 +181,7 @@ Cannot calculate fee! Wrong data received from the node The wallet is empty Please wait for confirmation of incoming transaction - Not enough funds or incorrect amount + Not enough ETH funds for gas PIN2 is required to sign the payment