lib: rename timeLockedAmounts to lockableAmounts

This commit is contained in:
Oscar Mira 2025-05-25 21:08:02 +02:00
parent e9cae0b359
commit a02241128a
No known key found for this signature in database
GPG key ID: B371B98C5DC32237
2 changed files with 14 additions and 12 deletions

View file

@ -120,7 +120,7 @@ fun WalletBalanceDetailsPreview() {
WalletBalanceView(
balance = Balance(
pendingAmount = 5.xmr,
timeLockedAmounts = listOf(
lockableAmounts = listOf(
TimeLocked(10.xmr, null),
TimeLocked(BigDecimal("0.000000000001").xmr, null),
TimeLocked(30.xmr, null)

View file

@ -1,32 +1,34 @@
package im.molly.monero
data class Balance(
val pendingAmount: MoneroAmount,
val timeLockedAmounts: List<TimeLocked<MoneroAmount>>,
val lockableAmounts: List<TimeLocked<MoneroAmount>>,
val pendingAmount: MoneroAmount = MoneroAmount.ZERO,
) {
val confirmedAmount: MoneroAmount = timeLockedAmounts.sumOf { it.value }
val confirmedAmount: MoneroAmount = lockableAmounts.sumOf { it.value }
val totalAmount: MoneroAmount = confirmedAmount + pendingAmount
companion object {
val EMPTY = Balance(emptyList())
}
fun unlockedAmountAt(targetTime: BlockchainTime): MoneroAmount {
return timeLockedAmounts
return lockableAmounts
.filter { it.isUnlocked(targetTime) }
.sumOf { it.value }
}
fun lockedAmountsAt(targetTime: BlockchainTime): Map<BlockchainTimeSpan, MoneroAmount> {
return timeLockedAmounts
return lockableAmounts
.filter { it.isLocked(targetTime) }
.groupBy({ it.timeUntilUnlock(targetTime) }, { it.value })
.mapValues { (_, amounts) ->
amounts.sum()
}
.mapValues { it.value.sum() }
}
}
fun Iterable<TimeLocked<Enote>>.calculateBalance(
accountFilter: (owner: AccountAddress) -> Boolean = { true },
): Balance {
val lockedAmounts = mutableListOf<TimeLocked<MoneroAmount>>()
val lockableAmounts = mutableListOf<TimeLocked<MoneroAmount>>()
var pendingAmount = MoneroAmount.ZERO
@ -34,9 +36,9 @@ fun Iterable<TimeLocked<Enote>>.calculateBalance(
if (timeLocked.value.age == 0) {
pendingAmount += timeLocked.value.amount
} else {
lockedAmounts.add(TimeLocked(timeLocked.value.amount, timeLocked.unlockTime))
lockableAmounts.add(TimeLocked(timeLocked.value.amount, timeLocked.unlockTime))
}
}
return Balance(pendingAmount, lockedAmounts)
return Balance(lockableAmounts, pendingAmount)
}