From d3899dcf8915e561bd6c275e92ba4aa3175ec885 Mon Sep 17 00:00:00 2001 From: Rubens Date: Thu, 17 Jul 2025 11:35:57 -0300 Subject: [PATCH] feat: added new notation Bip177 to Onchain, lightining and total sats --- .../Extensions/UInt64+Extensions.swift | 23 ++++++++++++++ LDKNodeMonday/View/Home/BitcoinView.swift | 30 ++++++++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/LDKNodeMonday/Extensions/UInt64+Extensions.swift b/LDKNodeMonday/Extensions/UInt64+Extensions.swift index d3737f1..69f0e83 100644 --- a/LDKNodeMonday/Extensions/UInt64+Extensions.swift +++ b/LDKNodeMonday/Extensions/UInt64+Extensions.swift @@ -56,6 +56,29 @@ extension UInt64 { } +extension UInt64 { + private var numberFormatter: NumberFormatter { + let numberFormatter = NumberFormatter() + numberFormatter.numberStyle = .decimal + numberFormatter.usesGroupingSeparator = true + numberFormatter.groupingSeparator = "," + numberFormatter.generatesDecimalNumbers = false + + return numberFormatter + } + + func formattedBip177() -> String { + if self != .zero && self >= 1_000_000 && self % 1_000_000 == .zero { + return "\(self / 1_000_000)M" + + } else if self != .zero && self % 1_000 == 0 { + return "\(self / 1_000)K" + } + + return numberFormatter.string(from: NSNumber(value: self)) ?? "0" + } +} + public enum BitcoinFormatting { case satscomma case truncated diff --git a/LDKNodeMonday/View/Home/BitcoinView.swift b/LDKNodeMonday/View/Home/BitcoinView.swift index ef05608..234b5d3 100644 --- a/LDKNodeMonday/View/Home/BitcoinView.swift +++ b/LDKNodeMonday/View/Home/BitcoinView.swift @@ -160,6 +160,12 @@ struct BalanceHeader: View { return viewModel.balances.totalLightningBalanceSats.formatted( .number.notation(.automatic) ) + case .totalBip177: + return "₿" + viewModel.unifiedBalance.formattedBip177() + case .onchainBip177: + return "₿" + viewModel.balances.totalOnchainBalanceSats.formattedBip177() + case .lightningBip177: + return "₿" + viewModel.balances.totalLightningBalanceSats.formattedBip177() } } @@ -171,23 +177,22 @@ struct BalanceHeader: View { return "₿" + viewModel.unifiedBalance.formattedSatsAsBtc() case .btcFiat: return viewModel.totalUSDValue - case .totalSats: + case .totalSats, .totalBip177: return "Total" - case .onchainSats: + case .onchainSats, .onchainBip177: return "Onchain" - case .lightningSats: + case .lightningSats, .lightningBip177: return "Lightning" + } } var unitValue: String { switch displayBalanceType { - case .fiatBtc: - return "" - case .btcFiat: - return "" - default: + case .totalSats, .onchainSats, .lightningSats: return "sats" + default: + return "" } } } @@ -312,6 +317,9 @@ public enum DisplayBalanceType: String { case totalSats case onchainSats case lightningSats + case onchainBip177 + case lightningBip177 + case totalBip177 } extension DisplayBalanceType { @@ -328,6 +336,12 @@ extension DisplayBalanceType { case .onchainSats: self = .lightningSats case .lightningSats: + self = .totalBip177 + case .totalBip177: + self = .onchainBip177 + case .onchainBip177: + self = .lightningBip177 + case .lightningBip177: self = .fiatSats } }