deal with pending transactions

This commit is contained in:
m2049r
2017-08-20 22:35:31 +02:00
parent 344eeb7a3b
commit 3a68802ae7
6 changed files with 44 additions and 6 deletions
@@ -132,6 +132,7 @@ public class TxFragment extends Fragment {
sb.append(getString(R.string.tx_paymentId)).append(": ");
sb.append(info.paymentId).append("\n");
sb.append(getString(R.string.tx_amount)).append(": ");
sb.append((info.direction == TransactionInfo.Direction.Direction_In ? "+" : "-"));
sb.append(Wallet.getDisplayAmount(info.amount)).append("\n");
sb.append(getString(R.string.tx_fee)).append(": ");
sb.append(Wallet.getDisplayAmount(info.fee)).append("\n");
@@ -141,7 +142,13 @@ public class TxFragment extends Fragment {
sb.append(getString(R.string.tx_timestamp)).append(": ");
sb.append(TS_FORMATTER.format(new Date(info.timestamp * 1000))).append("\n");
sb.append(getString(R.string.tx_blockheight)).append(": ");
sb.append(info.blockheight).append("\n");
if (info.isPending) {
sb.append(getString(R.string.tx_pending)).append("\n");
} else if (info.isFailed) {
sb.append(getString(R.string.tx_failed)).append("\n");
} else {
sb.append(info.blockheight).append("\n");
}
sb.append(getString(R.string.tx_transfers)).append(": ");
if (info.transfers != null) {
boolean comma = false;
@@ -162,7 +169,7 @@ public class TxFragment extends Fragment {
ClipData clip = ClipData.newPlainText(getString(R.string.tx_copy_label), sb.toString());
clipboardManager.setPrimaryClip(clip);
Toast.makeText(getActivity(), getString(R.string.tx_copy_message), Toast.LENGTH_SHORT).show();
Log.d(TAG, sb.toString());
//Log.d(TAG, sb.toString());
}
TransactionInfo info = null;
@@ -185,8 +192,15 @@ public class TxFragment extends Fragment {
tvTxId.setText(info.hash);
tvTxKey.setText(info.txKey.isEmpty() ? "-" : info.txKey);
tvTxPaymentId.setText(info.paymentId);
tvTxBlockheight.setText("" + info.blockheight);
tvTxAmount.setText(Wallet.getDisplayAmount(info.amount));
if (info.isPending) {
tvTxBlockheight.setText(getString(R.string.tx_pending));
} else if (info.isFailed) {
tvTxBlockheight.setText(getString(R.string.tx_failed));
} else {
tvTxBlockheight.setText("" + info.blockheight);
}
String sign = (info.direction == TransactionInfo.Direction.Direction_In ? "+" : "-");
tvTxAmount.setText(sign + Wallet.getDisplayAmount(info.amount));
tvTxFee.setText(Wallet.getDisplayAmount(info.fee));
StringBuffer sb = new StringBuffer();
if (info.transfers != null) {
@@ -45,6 +45,8 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
static final int TX_RED = Color.rgb(255, 79, 65);
static final int TX_GREEN = Color.rgb(54, 176, 91);
static final int TX_PENDING = Color.rgb(72, 53, 176);
static final int TX_FAILED = Color.rgb(208, 0, 255);
public interface OnInteractionListener {
void onInteraction(View view, TransactionInfo item);
@@ -89,6 +91,13 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
Collections.sort(data, new Comparator<TransactionInfo>() {
@Override
public int compare(TransactionInfo o1, TransactionInfo o2) {
if ((o1.isPending) && (o2.isPending)) {
long b1 = o1.timestamp;
long b2 = o2.timestamp;
return (b1 > b2) ? -1 : (b1 < b2) ? 1 : 0;
}
if (o1.isPending) return -1;
if (o2.isPending) return 1;
long b1 = o1.blockheight;
long b2 = o2.blockheight;
return (b1 > b2) ? -1 : (b1 < b2) ? 1 : 0;
@@ -141,7 +150,16 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
this.tvAmount.setText(amountParts[0]);
this.tvAmountDecimal.setText(amountParts[1]);
if (infoItem.direction == TransactionInfo.Direction.Direction_In) {
if (infoItem.isPending) {
setTxColour(TX_PENDING);
if (infoItem.direction == TransactionInfo.Direction.Direction_Out) {
this.tvAmount.setText('-' + amountParts[0]);
}
} else if (infoItem.isFailed) {
this.tvAmount.setText('(' + amountParts[0]);
this.tvAmountDecimal.setText(amountParts[1] + ')');
setTxColour(TX_FAILED);
} else if (infoItem.direction == TransactionInfo.Direction.Direction_In) {
setTxColour(TX_GREEN);
} else {
setTxColour(TX_RED);
@@ -21,6 +21,7 @@ import android.os.Parcelable;
import android.util.Log;
import java.util.List;
import java.util.Random;
// this is not the TransactionInfo from the API as that is owned by the TransactionHistory
// this is a POJO for the TransactionInfoAdapter
@@ -91,6 +92,7 @@ public class TransactionInfo implements Parcelable {
this.confirmations = confirmations;
this.transfers = transfers;
}
Random rnd = new Random();
public String toString() {
return direction + "@" + blockheight + " " + amount;
@@ -345,6 +345,7 @@ public class WalletService extends Service {
Log.d(TAG, "Wallet store failed: " + myWallet.getErrorString());
}
if (observer != null) observer.onWalletStored(rc);
listener.updated = true;
}
} else if (cmd.equals(REQUEST_CMD_SETNOTE)) {
Wallet myWallet = getWallet();