From 693b34239341079e924a9f562fafb0ead8a740e7 Mon Sep 17 00:00:00 2001 From: pokkst Date: Thu, 22 Sep 2022 19:37:54 -0500 Subject: [PATCH] sort UTXOs by value --- .../wallet/fragment/utxos/UtxosFragment.java | 2 ++ .../java/net/mynero/wallet/model/CoinsInfo.java | 15 ++++++++++++++- .../net/mynero/wallet/service/UTXOService.java | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/mynero/wallet/fragment/utxos/UtxosFragment.java b/app/src/main/java/net/mynero/wallet/fragment/utxos/UtxosFragment.java index 73f4f85..58e6bf6 100644 --- a/app/src/main/java/net/mynero/wallet/fragment/utxos/UtxosFragment.java +++ b/app/src/main/java/net/mynero/wallet/fragment/utxos/UtxosFragment.java @@ -19,6 +19,7 @@ import net.mynero.wallet.model.CoinsInfo; import net.mynero.wallet.service.UTXOService; import java.util.ArrayList; +import java.util.Collections; public class UtxosFragment extends Fragment implements CoinsInfoAdapter.CoinsInfoAdapterListener { @@ -64,6 +65,7 @@ public class UtxosFragment extends Fragment implements CoinsInfoAdapter.CoinsInf filteredUtxos.add(coinsInfo); } } + Collections.sort(filteredUtxos); if (filteredUtxos.isEmpty()) { utxosRecyclerView.setVisibility(View.GONE); } else { diff --git a/app/src/main/java/net/mynero/wallet/model/CoinsInfo.java b/app/src/main/java/net/mynero/wallet/model/CoinsInfo.java index e99e66e..961b52d 100644 --- a/app/src/main/java/net/mynero/wallet/model/CoinsInfo.java +++ b/app/src/main/java/net/mynero/wallet/model/CoinsInfo.java @@ -24,7 +24,7 @@ import androidx.annotation.NonNull; import java.util.ArrayList; import java.util.List; -public class CoinsInfo implements Parcelable { +public class CoinsInfo implements Parcelable, Comparable { static { System.loadLibrary("monerujo"); } @@ -94,4 +94,17 @@ public class CoinsInfo implements Parcelable { public void writeToParcel(@NonNull Parcel parcel, int i) { parcel.writeLong(globalOutputIndex); } + + @Override + public int compareTo(CoinsInfo another) { + long b1 = this.amount; + long b2 = another.amount; + if (b1 > b2) { + return -1; + } else if (b1 < b2) { + return 1; + } else { + return this.hash.compareTo(another.hash); + } + } } diff --git a/app/src/main/java/net/mynero/wallet/service/UTXOService.java b/app/src/main/java/net/mynero/wallet/service/UTXOService.java index b288cf1..0f091f0 100644 --- a/app/src/main/java/net/mynero/wallet/service/UTXOService.java +++ b/app/src/main/java/net/mynero/wallet/service/UTXOService.java @@ -38,7 +38,7 @@ public class UTXOService extends ServiceBase { ArrayList seenTxs = new ArrayList<>(); List utxos = getUtxos(); long amountSelected = 0; - Collections.shuffle(utxos); + Collections.sort(utxos); //loop through each utxo for (CoinsInfo coinsInfo : utxos) { if(!coinsInfo.isSpent()) { //filter out spent outputs