Skip to content

Commit 6405e97

Browse files
authored
spm: bdk-swift 1.0.0-beta.6
1 parent ca3b61d commit 6405e97

File tree

6 files changed

+74
-39
lines changed

6 files changed

+74
-39
lines changed

BDKSwiftExampleWallet.xcodeproj/project.pbxproj

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,18 @@
3434
AE2B8C1D2A9678C900815B2F /* FeeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2B8C1C2A9678C900815B2F /* FeeService.swift */; };
3535
AE2B8C1F2A96797300815B2F /* RecommendedFees.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2B8C1E2A96797300815B2F /* RecommendedFees.swift */; };
3636
AE2F255D2BED0BFB002A9AC6 /* AppError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2F255C2BED0BFB002A9AC6 /* AppError.swift */; };
37+
AE32D7622D0C9146006A8788 /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AE32D7612D0C9146006A8788 /* BitcoinDevKit */; };
3738
AE34DDAC2B6B31ED00F04AD4 /* WalletRecoveryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE34DDAB2B6B31ED00F04AD4 /* WalletRecoveryView.swift */; };
3839
AE34DDAE2B6B320F00F04AD4 /* WalletRecoveryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE34DDAD2B6B320F00F04AD4 /* WalletRecoveryViewModel.swift */; };
3940
AE3646262BEDB01200B04E25 /* FileManager+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE3646252BEDB01200B04E25 /* FileManager+Extensions.swift */; };
4041
AE3902A42A3B4CD900BEC318 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE3902A32A3B4CD900BEC318 /* HomeView.swift */; };
42+
AE4135652D0CC1AD00605103 /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AE4135642D0CC1AD00605103 /* BitcoinDevKit */; };
4143
AE49847C2A1BBBD6009951E2 /* BDKSwiftExampleWalletApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE49847B2A1BBBD6009951E2 /* BDKSwiftExampleWalletApp.swift */; };
4244
AE4984802A1BBBD7009951E2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AE49847F2A1BBBD7009951E2 /* Assets.xcassets */; };
4345
AE4984832A1BBBD7009951E2 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AE4984822A1BBBD7009951E2 /* Preview Assets.xcassets */; };
4446
AE49848D2A1BBBD8009951E2 /* BDKSwiftExampleWalletTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE49848C2A1BBBD8009951E2 /* BDKSwiftExampleWalletTests.swift */; };
4547
AE4984A62A1BBCB8009951E2 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = AE4984A52A1BBCB8009951E2 /* README.md */; };
48+
AE52D68F2D1367C80042119D /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AE52D68E2D1367C80042119D /* BitcoinDevKit */; };
4649
AE6715FA2A9A9220005C193F /* BDKSwiftExampleWalletPriceServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6715F92A9A9220005C193F /* BDKSwiftExampleWalletPriceServiceTests.swift */; };
4750
AE6715FD2A9AC056005C193F /* PriceServiceError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6715FC2A9AC056005C193F /* PriceServiceError.swift */; };
4851
AE6715FF2A9AC066005C193F /* FeeServiceError.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6715FE2A9AC066005C193F /* FeeServiceError.swift */; };
@@ -74,7 +77,6 @@
7477
AEB735D32B2CC4B900F99DBB /* BitcoinUI in Frameworks */ = {isa = PBXBuildFile; productRef = AEB735D22B2CC4B900F99DBB /* BitcoinUI */; };
7578
AEB905C32A7EEBF000CD0337 /* BackupInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEB905C22A7EEBF000CD0337 /* BackupInfo.swift */; };
7679
AEC2CF5A2ABFBA19008065E4 /* BuildTransactionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEC2CF592ABFBA19008065E4 /* BuildTransactionViewModel.swift */; };
77-
AED02B912C9D0B44006DAAAF /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AED02B902C9D0B44006DAAAF /* BitcoinDevKit */; };
7880
AED062712A9BB1D6001DC6BD /* BDKSwiftExampleWalletFeeServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AED062702A9BB1D6001DC6BD /* BDKSwiftExampleWalletFeeServiceTests.swift */; };
7981
AED062732A9BD698001DC6BD /* BDKSwiftExampleWalletKeyServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AED062722A9BD698001DC6BD /* BDKSwiftExampleWalletKeyServiceTests.swift */; };
8082
AED062752A9BD7FA001DC6BD /* BDKSwiftExampleWalletBDKServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AED062742A9BD7FA001DC6BD /* BDKSwiftExampleWalletBDKServiceTests.swift */; };
@@ -187,7 +189,9 @@
187189
AE187D782C9BB3B50081D0C3 /* BitcoinDevKit in Frameworks */,
188190
AE29ED0F2BBE2E7100EB9C4F /* BitcoinDevKit in Frameworks */,
189191
AEAF83B62B7BD4D10019B23B /* CodeScanner in Frameworks */,
190-
AED02B912C9D0B44006DAAAF /* BitcoinDevKit in Frameworks */,
192+
AE52D68F2D1367C80042119D /* BitcoinDevKit in Frameworks */,
193+
AE32D7622D0C9146006A8788 /* BitcoinDevKit in Frameworks */,
194+
AE4135652D0CC1AD00605103 /* BitcoinDevKit in Frameworks */,
191195
AEB735D32B2CC4B900F99DBB /* BitcoinUI in Frameworks */,
192196
AEE83A492C07F54B00834468 /* BitcoinDevKit in Frameworks */,
193197
AE7D5A0E2A7EE62200EAC8CE /* KeychainAccess in Frameworks */,
@@ -542,7 +546,9 @@
542546
AE29ED0E2BBE2E7100EB9C4F /* BitcoinDevKit */,
543547
AEE83A482C07F54B00834468 /* BitcoinDevKit */,
544548
AE187D772C9BB3B50081D0C3 /* BitcoinDevKit */,
545-
AED02B902C9D0B44006DAAAF /* BitcoinDevKit */,
549+
AE32D7612D0C9146006A8788 /* BitcoinDevKit */,
550+
AE4135642D0CC1AD00605103 /* BitcoinDevKit */,
551+
AE52D68E2D1367C80042119D /* BitcoinDevKit */,
546552
);
547553
productName = BDKSwiftExampleWallet;
548554
productReference = AE4984782A1BBBD6009951E2 /* BDKSwiftExampleWallet.app */;
@@ -599,7 +605,7 @@
599605
AE7D5A0C2A7EE62200EAC8CE /* XCRemoteSwiftPackageReference "KeychainAccess" */,
600606
AEB735D12B2CC4B900F99DBB /* XCRemoteSwiftPackageReference "BitcoinUI" */,
601607
AEAF83B42B7BD4D10019B23B /* XCRemoteSwiftPackageReference "CodeScanner" */,
602-
AED02B8F2C9D0B44006DAAAF /* XCRemoteSwiftPackageReference "bdk-swift" */,
608+
AE52D68D2D1367C80042119D /* XCRemoteSwiftPackageReference "bdk-swift" */,
603609
);
604610
productRefGroup = AE4984792A1BBBD6009951E2 /* Products */;
605611
projectDirPath = "";
@@ -994,6 +1000,14 @@
9941000
/* End XCConfigurationList section */
9951001

9961002
/* Begin XCRemoteSwiftPackageReference section */
1003+
AE52D68D2D1367C80042119D /* XCRemoteSwiftPackageReference "bdk-swift" */ = {
1004+
isa = XCRemoteSwiftPackageReference;
1005+
repositoryURL = "https://github.com/bitcoindevkit/bdk-swift.git";
1006+
requirement = {
1007+
kind = exactVersion;
1008+
version = "1.0.0-beta.6";
1009+
};
1010+
};
9971011
AE7D5A0C2A7EE62200EAC8CE /* XCRemoteSwiftPackageReference "KeychainAccess" */ = {
9981012
isa = XCRemoteSwiftPackageReference;
9991013
repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git";
@@ -1018,14 +1032,6 @@
10181032
kind = branch;
10191033
};
10201034
};
1021-
AED02B8F2C9D0B44006DAAAF /* XCRemoteSwiftPackageReference "bdk-swift" */ = {
1022-
isa = XCRemoteSwiftPackageReference;
1023-
repositoryURL = "https://github.com/bitcoindevkit/bdk-swift.git";
1024-
requirement = {
1025-
kind = exactVersion;
1026-
version = "1.0.0-beta.5";
1027-
};
1028-
};
10291035
/* End XCRemoteSwiftPackageReference section */
10301036

10311037
/* Begin XCSwiftPackageProductDependency section */
@@ -1037,6 +1043,19 @@
10371043
isa = XCSwiftPackageProductDependency;
10381044
productName = BitcoinDevKit;
10391045
};
1046+
AE32D7612D0C9146006A8788 /* BitcoinDevKit */ = {
1047+
isa = XCSwiftPackageProductDependency;
1048+
productName = BitcoinDevKit;
1049+
};
1050+
AE4135642D0CC1AD00605103 /* BitcoinDevKit */ = {
1051+
isa = XCSwiftPackageProductDependency;
1052+
productName = BitcoinDevKit;
1053+
};
1054+
AE52D68E2D1367C80042119D /* BitcoinDevKit */ = {
1055+
isa = XCSwiftPackageProductDependency;
1056+
package = AE52D68D2D1367C80042119D /* XCRemoteSwiftPackageReference "bdk-swift" */;
1057+
productName = BitcoinDevKit;
1058+
};
10401059
AE7D5A0D2A7EE62200EAC8CE /* KeychainAccess */ = {
10411060
isa = XCSwiftPackageProductDependency;
10421061
package = AE7D5A0C2A7EE62200EAC8CE /* XCRemoteSwiftPackageReference "KeychainAccess" */;
@@ -1052,11 +1071,6 @@
10521071
package = AEB735D12B2CC4B900F99DBB /* XCRemoteSwiftPackageReference "BitcoinUI" */;
10531072
productName = BitcoinUI;
10541073
};
1055-
AED02B902C9D0B44006DAAAF /* BitcoinDevKit */ = {
1056-
isa = XCSwiftPackageProductDependency;
1057-
package = AED02B8F2C9D0B44006DAAAF /* XCRemoteSwiftPackageReference "bdk-swift" */;
1058-
productName = BitcoinDevKit;
1059-
};
10601074
AEE83A482C07F54B00834468 /* BitcoinDevKit */ = {
10611075
isa = XCSwiftPackageProductDependency;
10621076
productName = BitcoinDevKit;

BDKSwiftExampleWallet/Extensions/BDK+Extensions/CanonicalTx+Extensions.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ extension CanonicalTx {
1919
hash: "hash"
2020
),
2121
confirmationTime: UInt64(21)
22-
)
22+
),
23+
transitively: "c1f9fe0d7f97c6490f8360cf71bbef151f2e73302bd06f1690d640b96fb94457"
2324
)
2425
)
2526
}

BDKSwiftExampleWallet/Extensions/BDK+Extensions/ChainPosition+Extensions.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,16 @@ extension ChainPosition {
1919
return false
2020
case (.unconfirmed(let timestamp1), .unconfirmed(let timestamp2)):
2121
// If both are unconfirmed, compare by timestamp (optional).
22-
return timestamp1 < timestamp2
23-
case (.confirmed(let blockTime1), .confirmed(let blockTime2)):
24-
// If both are confirmed, compare by block height descending.
25-
return blockTime1.blockId.height > blockTime2.blockId.height
22+
return (timestamp1 ?? 0) < (timestamp2 ?? 0)
23+
case (
24+
.confirmed(let blockTime1, let transitively1),
25+
.confirmed(let blockTime2, let transitively2)
26+
):
27+
// Sort by height descending, but note that if transitively is Some,
28+
// this block height might not be the "original" confirmation block
29+
return blockTime1.blockId.height != blockTime2.blockId.height
30+
? blockTime1.blockId.height > blockTime2.blockId.height
31+
: (transitively1 != nil) && (transitively2 == nil)
2632
}
2733
}
2834
}

BDKSwiftExampleWallet/Resources/Localizable.xcstrings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,9 @@
532532
}
533533
}
534534
}
535+
},
536+
"Pending" : {
537+
535538
},
536539
"Please make sure to write it down and store it securely." : {
537540

BDKSwiftExampleWallet/View/Activity/TransactionDetailView.swift

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ struct TransactionDetailView: View {
5050
.fontWeight(.semibold)
5151

5252
switch canonicalTx.chainPosition {
53-
case .confirmed(let confirmationBlockTime):
53+
case .confirmed(let confirmationBlockTime, _):
5454
Text("Block \(confirmationBlockTime.blockId.height.delimiter)")
5555
.foregroundStyle(.secondary)
5656
case .unconfirmed(_):
@@ -76,20 +76,24 @@ struct TransactionDetailView: View {
7676
.fontDesign(.rounded)
7777
VStack(spacing: 4) {
7878
switch canonicalTx.chainPosition {
79-
case .confirmed(let confirmationBlockTime):
79+
case .confirmed(let confirmationBlockTime, _):
8080
Text(
8181
confirmationBlockTime.confirmationTime.toDate().formatted(
8282
date: .abbreviated,
8383
time: Date.FormatStyle.TimeStyle.shortened
8484
)
8585
)
8686
case .unconfirmed(let timestamp):
87-
Text(
88-
timestamp.toDate().formatted(
89-
date: .abbreviated,
90-
time: Date.FormatStyle.TimeStyle.shortened
87+
if let timestamp {
88+
Text(
89+
timestamp.toDate().formatted(
90+
date: .abbreviated,
91+
time: Date.FormatStyle.TimeStyle.shortened
92+
)
9193
)
92-
)
94+
} else {
95+
Text("Pending")
96+
}
9397
}
9498
if let fee = viewModel.calculateFee {
9599
Text("\(fee.formattedWithSeparator) sats fee")

BDKSwiftExampleWallet/View/Activity/TransactionItemView.swift

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ struct TransactionItemView: View {
4444
.foregroundStyle(
4545
{
4646
switch canonicalTx.chainPosition {
47-
case .confirmed(_):
47+
case .confirmed(_, _):
4848
Color.bitcoinOrange
4949
case .unconfirmed(_):
5050
Color.gray.opacity(0.5)
@@ -63,7 +63,7 @@ struct TransactionItemView: View {
6363
.font(.title)
6464
.foregroundStyle(.primary)
6565
switch canonicalTx.chainPosition {
66-
case .confirmed(let confirmationBlockTime):
66+
case .confirmed(let confirmationBlockTime, _):
6767
Text(
6868
confirmationBlockTime.confirmationTime.toDate().formatted(
6969
date: .abbreviated,
@@ -74,15 +74,22 @@ struct TransactionItemView: View {
7474
.font(.caption2)
7575
.fontWidth(.condensed)
7676
case .unconfirmed(let timestamp):
77-
Text(
78-
timestamp.toDate().formatted(
79-
date: .abbreviated,
80-
time: .shortened
77+
if let timestamp {
78+
Text(
79+
timestamp.toDate().formatted(
80+
date: .abbreviated,
81+
time: .shortened
82+
)
8183
)
82-
)
83-
.lineLimit(dynamicTypeSize.isAccessibilitySize ? 2 : 1)
84-
.font(.caption2)
85-
.fontWidth(.condensed)
84+
.lineLimit(dynamicTypeSize.isAccessibilitySize ? 2 : 1)
85+
.font(.caption2)
86+
.fontWidth(.condensed)
87+
} else {
88+
Text("Pending")
89+
.lineLimit(dynamicTypeSize.isAccessibilitySize ? 2 : 1)
90+
.font(.caption2)
91+
.fontWidth(.condensed)
92+
}
8693
}
8794
}
8895
.foregroundStyle(.secondary)

0 commit comments

Comments
 (0)