Skip to content

Commit b2510e3

Browse files
committed
refactor: rename LnurlAmountConversion to LightningAmountConversion
1 parent 777eb4c commit b2510e3

File tree

4 files changed

+27
-27
lines changed

4 files changed

+27
-27
lines changed

Bitkit/Utilities/LnurlAmountConversion.swift renamed to Bitkit/Utilities/LightningAmountConversion.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import Foundation
22

3-
enum LnurlAmountConversion {
4-
/// LNURL `minSendable` / `maxSendable` values are expressed in millisatoshis (msat).
3+
enum LightningAmountConversion {
4+
/// Lightning amounts are commonly expressed in millisatoshis (msat).
55
///
66
/// The UI and amount input operate in whole sats. When converting a minimum bound to sats we must round up:
7-
/// `minSendable = 100500 msat` means the minimum payable amount is `101 sat` (not `100 sat`).
7+
/// `100500 msat` means the minimum payable amount is `101 sat` (not `100 sat`).
88
static func satsCeil(fromMsats msats: UInt64) -> UInt64 {
99
let quotient = msats / Env.msatsPerSat
1010
let remainder = msats % Env.msatsPerSat

Bitkit/ViewModels/AppViewModel.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ extension AppViewModel {
253253
}
254254

255255
var normalizedData = data
256-
normalizedData.minSendable = max(1, LnurlAmountConversion.satsCeil(fromMsats: normalizedData.minSendable))
257-
normalizedData.maxSendable = max(normalizedData.minSendable, LnurlAmountConversion.satsFloor(fromMsats: normalizedData.maxSendable))
256+
normalizedData.minSendable = max(1, LightningAmountConversion.satsCeil(fromMsats: normalizedData.minSendable))
257+
normalizedData.maxSendable = max(normalizedData.minSendable, LightningAmountConversion.satsFloor(fromMsats: normalizedData.maxSendable))
258258

259259
// Check if user has enough lightning balance to pay the minimum amount
260260
let lightningBalance = lightningService.balances?.totalLightningBalanceSats ?? 0
@@ -292,8 +292,8 @@ extension AppViewModel {
292292
}
293293

294294
var normalizedData = data
295-
let minSats = max(1, LnurlAmountConversion.satsCeil(fromMsats: minMsats))
296-
let maxSats = max(minSats, LnurlAmountConversion.satsFloor(fromMsats: maxMsats))
295+
let minSats = max(1, LightningAmountConversion.satsCeil(fromMsats: minMsats))
296+
let maxSats = max(minSats, LightningAmountConversion.satsFloor(fromMsats: maxMsats))
297297
normalizedData.minWithdrawable = minSats
298298
normalizedData.maxWithdrawable = maxSats
299299

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
@testable import Bitkit
2+
import XCTest
3+
4+
final class LightningAmountConversionTests: XCTestCase {
5+
func testSatsCeilRoundsUpWhenNotDivisibleBy1000() {
6+
XCTAssertEqual(LightningAmountConversion.satsCeil(fromMsats: 100_500), 101)
7+
XCTAssertEqual(LightningAmountConversion.satsCeil(fromMsats: 1500), 2)
8+
}
9+
10+
func testSatsCeilKeepsExactSatAmounts() {
11+
XCTAssertEqual(LightningAmountConversion.satsCeil(fromMsats: 100_000), 100)
12+
XCTAssertEqual(LightningAmountConversion.satsCeil(fromMsats: 0), 0)
13+
}
14+
15+
func testSatsFloorRoundsDown() {
16+
XCTAssertEqual(LightningAmountConversion.satsFloor(fromMsats: 100_999), 100)
17+
XCTAssertEqual(LightningAmountConversion.satsFloor(fromMsats: 100_000), 100)
18+
XCTAssertEqual(LightningAmountConversion.satsFloor(fromMsats: 0), 0)
19+
}
20+
}

BitkitTests/LnurlAmountConversionTests.swift

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)