Skip to content

Commit 2425ba6

Browse files
committed
feat: sort coins by denom, sats
1 parent 92f0f10 commit 2425ba6

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

public/wallet-app.js

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,10 @@
138138
if (coin.reserved) {
139139
continue;
140140
}
141-
Object.assign(coin, { outputIndex: coin.index });
141+
Object.assign(coin, {
142+
outputIndex: coin.index,
143+
denom: DashJoin.getDenom(coin.satoshis),
144+
});
142145
utxos.push(coin);
143146
}
144147
}
@@ -751,6 +754,23 @@
751754
return 0;
752755
}
753756

757+
function sortCoinsByDenomAndSatsDesc(a, b) {
758+
if (a.denom < b.denom) {
759+
return 1;
760+
}
761+
if (a.denom > b.denom) {
762+
return -1;
763+
}
764+
765+
if (a.satoshis < b.satoshis) {
766+
return 1;
767+
}
768+
if (a.satoshis > b.satoshis) {
769+
return -1;
770+
}
771+
return 0;
772+
}
773+
754774
async function updateDeltas(addrs) {
755775
for (let address of addrs) {
756776
let info = dbGet(address);
@@ -794,43 +814,43 @@
794814
}
795815

796816
function renderCoins() {
797-
let totalBalance = 0;
798-
//let balances = [];
799817
let addrs = Object.keys(deltasMap);
800-
let elementStrs = [];
801-
let template = $('[data-id=coin-row-tmpl]').content;
802818
for (let addr of addrs) {
803819
let info = deltasMap[addr];
804-
console.log('DEBUG delta info', info);
805820
dbSet(addr, info);
806-
if (info.balance === 0) {
807-
continue;
808-
}
809-
totalBalance += info.balance;
810-
//let amount = delta.balance / SATS;
811-
//let amountStr = amount.toFixed(8);
812-
// balances.push(`${addr}: ${info.deltas.length}: ${amountStr}`);
813-
814-
for (let delta of info.deltas) {
815-
let amount = delta.satoshis / SATS;
816-
Object.assign(delta, { amount: amount });
821+
}
817822

818-
let clone = document.importNode(template, true);
819-
$('[data-name=coin]', clone).value = [
820-
delta.address,
821-
delta.txid,
822-
delta.index,
823-
].join(',');
824-
$('[data-name=address]', clone).textContent = delta.address;
825-
$('[data-name=amount]', clone).textContent = delta.amount.toFixed(4);
826-
$('[data-name=txid]', clone).textContent = delta.txid;
827-
$('[data-name=output-index]', clone).textContent = delta.index;
823+
let utxos = getAllUtxos();
824+
utxos.sort(sortCoinsByDenomAndSatsDesc);
828825

829-
elementStrs.push(clone.firstElementChild.outerHTML);
830-
//tableBody.appendChild(clone);
826+
let elementStrs = [];
827+
let template = $('[data-id=coin-row-tmpl]').content;
828+
for (let utxo of utxos) {
829+
let amount = utxo.satoshis / SATS;
830+
Object.assign(utxo, { amount: amount });
831+
832+
let clone = document.importNode(template, true);
833+
$('[data-name=coin]', clone).value = [
834+
utxo.address,
835+
utxo.txid,
836+
utxo.outputIndex,
837+
].join(',');
838+
$('[data-name=address]', clone).textContent = utxo.address;
839+
$('[data-name=amount]', clone).textContent = utxo.amount.toFixed(4);
840+
if (utxo.denom) {
841+
$('[data-name=amount]', clone).style.fontStyle = 'italic';
842+
$('[data-name=amount]', clone).style.fontWeight = 'bold';
843+
} else {
844+
//
831845
}
846+
$('[data-name=txid]', clone).textContent = utxo.txid;
847+
$('[data-name=output-index]', clone).textContent = utxo.index;
848+
849+
elementStrs.push(clone.firstElementChild.outerHTML);
850+
//tableBody.appendChild(clone);
832851
}
833852

853+
let totalBalance = DashTx.sum(utxos);
834854
let totalAmount = totalBalance / SATS;
835855
$('[data-id=total-balance]').innerText = totalAmount.toFixed(4);
836856

0 commit comments

Comments
 (0)