[#538] Update and adapt 0.50.2 TCA (#539)

- TCA updated to the latest version
This commit is contained in:
Lukas Korba 2023-02-13 18:13:42 +01:00 committed by GitHub
parent fdd6ff19c0
commit d87d16a031
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 176 additions and 149 deletions

View File

@ -2625,7 +2625,7 @@
repositoryURL = "https://github.com/pointfreeco/swift-composable-architecture";
requirement = {
kind = exactVersion;
version = 0.46.0;
version = 0.50.2;
};
};
9E2AC0FD27D8EC120042AA47 /* XCRemoteSwiftPackageReference "MnemonicSwift" */ = {

View File

@ -5,8 +5,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/combine-schedulers",
"state" : {
"revision" : "aa3e575929f2bcc5bad012bd2575eae716cbcdf7",
"version" : "0.8.0"
"revision" : "882ac01eb7ef9e36d4467eb4b1151e74fcef85ab",
"version" : "0.9.1"
}
},
{
@ -14,8 +14,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/grpc/grpc-swift.git",
"state" : {
"revision" : "4c63368b7462305903507e8acebd77264c0fb695",
"version" : "1.8.2"
"revision" : "783ed8ddcde07ac0332a5ec4647b665f82e95b78",
"version" : "1.14.0"
}
},
{
@ -23,8 +23,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/airbnb/lottie-ios",
"state" : {
"revision" : "246bab7ef72bad56abefb88e84a08871cecf9cb8",
"version" : "3.4.0"
"revision" : "b4bd0604ded9574807f41b4004b57dd1226a30a4",
"version" : "3.5.0"
}
},
{
@ -45,13 +45,22 @@
"version" : "0.14.1"
}
},
{
"identity" : "swift-atomics",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-atomics.git",
"state" : {
"revision" : "ff3d2212b6b093db7f177d0855adbc4ef9c5f036",
"version" : "1.0.3"
}
},
{
"identity" : "swift-case-paths",
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-case-paths",
"state" : {
"revision" : "bb436421f57269fbcfe7360735985321585a86e5",
"version" : "0.10.1"
"revision" : "c3a42e8d1a76ff557cf565ed6d8b0aee0e6e75af",
"version" : "0.11.0"
}
},
{
@ -59,8 +68,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-clocks",
"state" : {
"revision" : "692ec4f5429a667bdd968c7260dfa2b23adfeffc",
"version" : "0.1.4"
"revision" : "20b25ca0dd88ebfb9111ec937814ddc5a8880172",
"version" : "0.2.0"
}
},
{
@ -68,8 +77,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-collections",
"state" : {
"revision" : "48254824bb4248676bf7ce56014ff57b142b77eb",
"version" : "1.0.2"
"revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2",
"version" : "1.0.4"
}
},
{
@ -77,8 +86,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-composable-architecture",
"state" : {
"revision" : "52dca7e5edd6ec9e0b529380843a8cb13f57d7d7",
"version" : "0.46.0"
"revision" : "a99024bbd171d85a92bccbcea23e7c66f05dc12b",
"version" : "0.50.2"
}
},
{
@ -86,8 +95,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-crypto.git",
"state" : {
"revision" : "d9825fa541df64b1a7b182178d61b9a82730d01f",
"version" : "2.1.0"
"revision" : "75ec60b8b4cc0f085c3ac414f3dca5625fa3588e",
"version" : "2.2.4"
}
},
{
@ -95,8 +104,17 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-custom-dump",
"state" : {
"revision" : "819d9d370cd721c9d87671e29d947279292e4541",
"version" : "0.6.0"
"revision" : "dd86159e25c749873f144577e5d18309bf57534f",
"version" : "0.8.0"
}
},
{
"identity" : "swift-dependencies",
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-dependencies",
"state" : {
"revision" : "8282b0c59662eb38946afe30eb403663fc2ecf76",
"version" : "0.1.4"
}
},
{
@ -104,8 +122,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-identified-collections",
"state" : {
"revision" : "bfb0d43e75a15b6dfac770bf33479e8393884a36",
"version" : "0.4.1"
"revision" : "fd34c544ad27f3ba6b19142b348005bfa85b6005",
"version" : "0.6.0"
}
},
{
@ -113,8 +131,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-log.git",
"state" : {
"revision" : "5d66f7ba25daf4f94100e7022febf3c75e37a6c7",
"version" : "1.4.2"
"revision" : "32e8d724467f8fe623624570367e3d50c5638e46",
"version" : "1.5.2"
}
},
{
@ -122,8 +140,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-nio.git",
"state" : {
"revision" : "124119f0bb12384cef35aa041d7c3a686108722d",
"version" : "2.40.0"
"revision" : "45167b8006448c79dda4b7bd604e07a034c15c49",
"version" : "2.48.0"
}
},
{
@ -131,8 +149,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-nio-extras.git",
"state" : {
"revision" : "a75e92bde3683241c15df3dd905b7a6dcac4d551",
"version" : "1.12.1"
"revision" : "98378d1fe56527761c180f70b2d66a7b2307fc39",
"version" : "1.16.0"
}
},
{
@ -140,8 +158,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-nio-http2.git",
"state" : {
"revision" : "108ac15087ea9b79abb6f6742699cf31de0e8772",
"version" : "1.22.0"
"revision" : "22757ac305f3d44d2b99ba541193ff1d64e77d00",
"version" : "1.24.1"
}
},
{
@ -149,8 +167,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-nio-ssl.git",
"state" : {
"revision" : "c30c680c78c99afdabf84805a83c8745387c4ac7",
"version" : "2.20.2"
"revision" : "4fb7ead803e38949eb1d6fabb849206a72c580f3",
"version" : "2.23.0"
}
},
{
@ -158,8 +176,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-nio-transport-services.git",
"state" : {
"revision" : "2cb54f91ddafc90832c5fa247faf5798d0a7c204",
"version" : "1.13.0"
"revision" : "c0d9a144cfaec8d3d596aadde3039286a266c15c",
"version" : "1.15.0"
}
},
{
@ -167,8 +185,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-parsing",
"state" : {
"revision" : "bc92e84968990b41640214b636667f35b6e5d44c",
"version" : "0.10.0"
"revision" : "4bb9192468c1a8be57f46b7d6fd4f561c88b2195",
"version" : "0.11.0"
}
},
{
@ -176,17 +194,26 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "e1499bc69b9040b29184f7f2996f7bab467c1639",
"version" : "1.19.0"
"revision" : "ab3a58b7209a17d781c0d1dbb3e1ff3da306bae8",
"version" : "1.20.3"
}
},
{
"identity" : "swift-url-routing",
"kind" : "remoteSourceControl",
"location" : "http://github.com/pointfreeco/swift-url-routing",
"location" : "https://github.com/pointfreeco/swift-url-routing",
"state" : {
"revision" : "80e8a0257ccdd639e31f709954ceca6b690fdc67",
"version" : "0.3.1"
"revision" : "f54c4f74e7884f7930560c08387817ce28271770",
"version" : "0.4.0"
}
},
{
"identity" : "swiftui-navigation",
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swiftui-navigation",
"state" : {
"revision" : "270a754308f5440be52fc295242eb7031638bd15",
"version" : "0.6.1"
}
},
{
@ -194,8 +221,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
"state" : {
"revision" : "16e6409ee82e1b81390bdffbf217b9c08ab32784",
"version" : "0.5.0"
"revision" : "ace21305e0dd3a9e749aef79fef14be79a3b4669",
"version" : "0.8.2"
}
},
{
@ -210,10 +237,10 @@
{
"identity" : "zcashlightclientkit",
"kind" : "remoteSourceControl",
"location" : "https://github.com/zcash/ZcashLightClientKit",
"location" : "https://github.com/zcash/ZcashLightClientKit/",
"state" : {
"revision" : "731c7bbf4514a90b879c5c15968cdb41ac728e3a",
"version" : "0.18.0-beta"
"revision" : "2c211732e16d53fdcb1c94304bc4016af7f15c6c",
"version" : "0.18.1-beta"
}
}
],

View File

@ -59,11 +59,11 @@ protocol SDKSynchronizerClient {
func getShieldedBalance() -> WalletBalance?
func getTransparentBalance() -> WalletBalance?
func getAllSentTransactions() -> Effect<[WalletEvent], Never>
func getAllReceivedTransactions() -> Effect<[WalletEvent], Never>
func getAllClearedTransactions() -> Effect<[WalletEvent], Never>
func getAllPendingTransactions() -> Effect<[WalletEvent], Never>
func getAllTransactions() -> Effect<[WalletEvent], Never>
func getAllSentTransactions() -> EffectTask<[WalletEvent]>
func getAllReceivedTransactions() -> EffectTask<[WalletEvent]>
func getAllClearedTransactions() -> EffectTask<[WalletEvent]>
func getAllPendingTransactions() -> EffectTask<[WalletEvent]>
func getAllTransactions() -> EffectTask<[WalletEvent]>
func getUnifiedAddress(account: Int) -> UnifiedAddress?
func getTransparentAddress(account: Int) -> TransparentAddress?
@ -74,7 +74,7 @@ protocol SDKSynchronizerClient {
zatoshi: Zatoshi,
to recipientAddress: Recipient,
memo: Memo?
) -> Effect<Result<TransactionState, NSError>, Never>
) -> EffectTask<Result<TransactionState, NSError>>
}
extension SDKSynchronizerClient {

View File

@ -113,9 +113,9 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
latestScannedSynchronizerState?.transparentBalance
}
func getAllSentTransactions() -> Effect<[WalletEvent], Never> {
func getAllSentTransactions() -> EffectTask<[WalletEvent]> {
if let transactions = try? synchronizer?.allSentTransactions() {
return Effect(value: transactions.map {
return EffectTask(value: transactions.map {
let memos = try? synchronizer?.getMemos(for: $0)
let transaction = TransactionState.init(transaction: $0, memos: memos)
return WalletEvent(id: transaction.id, state: .send(transaction), timestamp: transaction.timestamp)
@ -125,9 +125,9 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
return .none
}
func getAllReceivedTransactions() -> Effect<[WalletEvent], Never> {
func getAllReceivedTransactions() -> EffectTask<[WalletEvent]> {
if let transactions = try? synchronizer?.allReceivedTransactions() {
return Effect(value: transactions.map {
return EffectTask(value: transactions.map {
let memos = try? synchronizer?.getMemos(for: $0)
let transaction = TransactionState.init(transaction: $0, memos: memos)
return WalletEvent(id: transaction.id, state: .send(transaction), timestamp: transaction.timestamp)
@ -137,9 +137,9 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
return .none
}
func getAllClearedTransactions() -> Effect<[WalletEvent], Never> {
func getAllClearedTransactions() -> EffectTask<[WalletEvent]> {
if let transactions = try? synchronizer?.allClearedTransactions() {
return Effect(value: transactions.map {
return EffectTask(value: transactions.map {
let memos = try? synchronizer?.getMemos(for: $0)
let transaction = TransactionState.init(transaction: $0, memos: memos)
return WalletEvent(id: transaction.id, state: .send(transaction), timestamp: transaction.timestamp)
@ -149,10 +149,10 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
return .none
}
func getAllPendingTransactions() -> Effect<[WalletEvent], Never> {
func getAllPendingTransactions() -> EffectTask<[WalletEvent]> {
if let transactions = try? synchronizer?.allPendingTransactions(),
let syncedBlockHeight = synchronizer?.latestScannedHeight {
return Effect(value: transactions.map {
return EffectTask(value: transactions.map {
let transaction = TransactionState.init(pendingTransaction: $0, latestBlockHeight: syncedBlockHeight)
return WalletEvent(id: transaction.id, state: .pending(transaction), timestamp: transaction.timestamp)
})
@ -161,7 +161,7 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
return .none
}
func getAllTransactions() -> Effect<[WalletEvent], Never> {
func getAllTransactions() -> EffectTask<[WalletEvent]> {
if let pendingTransactions = try? synchronizer?.allPendingTransactions(),
let clearedTransactions = try? synchronizer?.allClearedTransactions(),
let syncedBlockHeight = synchronizer?.latestScannedHeight {
@ -180,8 +180,8 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
}
return .merge(
Effect(value: cTxs),
Effect(value: pendingTxs)
EffectTask(value: cTxs),
EffectTask(value: pendingTxs)
)
.flatMap(Publishers.Sequence.init(sequence:))
.collect()
@ -208,8 +208,8 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
zatoshi: Zatoshi,
to recipientAddress: Recipient,
memo: Memo?
) -> Effect<Result<TransactionState, NSError>, Never> {
return Effect.run { [weak self] send in
) -> EffectTask<Result<TransactionState, NSError>> {
return .run { [weak self] send in
do {
guard let synchronizer = self?.synchronizer else {
await send(.failure(SDKSynchronizerClientError.synchronizerNotInitialized as NSError))

View File

@ -47,7 +47,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
WalletBalance(verified: Zatoshi(12345000), total: Zatoshi(12345000))
}
func getAllSentTransactions() -> Effect<[WalletEvent], Never> {
func getAllSentTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -56,7 +56,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -72,7 +72,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllReceivedTransactions() -> Effect<[WalletEvent], Never> {
func getAllReceivedTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -81,7 +81,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -97,7 +97,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllClearedTransactions() -> Effect<[WalletEvent], Never> {
func getAllClearedTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -106,7 +106,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -122,7 +122,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllPendingTransactions() -> Effect<[WalletEvent], Never> {
func getAllPendingTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(
date: 1651039606,
@ -135,7 +135,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039808, amount: Zatoshi(9), uuid: "ii99")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -151,7 +151,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllTransactions() -> Effect<[WalletEvent], Never> {
func getAllTransactions() -> EffectTask<[WalletEvent]> {
return .merge(
getAllClearedTransactions(),
getAllPendingTransactions()
@ -181,7 +181,7 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
zatoshi: Zatoshi,
to recipientAddress: Recipient,
memo: Memo?
) -> Effect<Result<TransactionState, NSError>, Never> {
) -> EffectTask<Result<TransactionState, NSError>> {
var memos: [Memo]? = []
if let memo { memos?.append(memo) }
@ -198,6 +198,6 @@ class MockSDKSynchronizerClient: SDKSynchronizerClient {
zecAmount: Zatoshi(10)
)
return Effect(value: Result.success(transactionState))
return EffectTask(value: Result.success(transactionState))
}
}

View File

@ -42,15 +42,15 @@ class NoopSDKSynchronizer: SDKSynchronizerClient {
func getTransparentBalance() -> WalletBalance? { nil }
func getAllSentTransactions() -> Effect<[WalletEvent], Never> { Effect(value: []) }
func getAllSentTransactions() -> EffectTask<[WalletEvent]> { EffectTask(value: []) }
func getAllReceivedTransactions() -> Effect<[WalletEvent], Never> { Effect(value: []) }
func getAllReceivedTransactions() -> EffectTask<[WalletEvent]> { EffectTask(value: []) }
func getAllClearedTransactions() -> Effect<[WalletEvent], Never> { Effect(value: []) }
func getAllClearedTransactions() -> EffectTask<[WalletEvent]> { EffectTask(value: []) }
func getAllPendingTransactions() -> Effect<[WalletEvent], Never> { Effect(value: []) }
func getAllPendingTransactions() -> EffectTask<[WalletEvent]> { EffectTask(value: []) }
func getAllTransactions() -> Effect<[WalletEvent], Never> { Effect(value: []) }
func getAllTransactions() -> EffectTask<[WalletEvent]> { EffectTask(value: []) }
func getUnifiedAddress(account: Int) -> UnifiedAddress? { nil }
@ -63,8 +63,8 @@ class NoopSDKSynchronizer: SDKSynchronizerClient {
zatoshi: Zatoshi,
to recipientAddress: Recipient,
memo: Memo?
) -> Effect<Result<TransactionState, NSError>, Never> {
Effect(value: Result.failure(SynchronizerError.criticalError as NSError))
) -> EffectTask<Result<TransactionState, NSError>> {
EffectTask(value: Result.failure(SynchronizerError.criticalError as NSError))
}
func updateStateChanged(_ newState: SDKSynchronizerState) {
@ -100,7 +100,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
func getTransparentBalance() -> WalletBalance? { nil }
func getAllSentTransactions() -> Effect<[WalletEvent], Never> {
func getAllSentTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -109,7 +109,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -125,7 +125,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllReceivedTransactions() -> Effect<[WalletEvent], Never> {
func getAllReceivedTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -134,7 +134,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -150,7 +150,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllClearedTransactions() -> Effect<[WalletEvent], Never> {
func getAllClearedTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(date: 1651039202, amount: Zatoshi(1), status: .paid(success: false), uuid: "aa11"),
TransactionStateMockHelper(date: 1651039101, amount: Zatoshi(2), uuid: "bb22"),
@ -159,7 +159,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039404, amount: Zatoshi(5), uuid: "ee55")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -175,7 +175,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllPendingTransactions() -> Effect<[WalletEvent], Never> {
func getAllPendingTransactions() -> EffectTask<[WalletEvent]> {
let mocked: [TransactionStateMockHelper] = [
TransactionStateMockHelper(
date: 1651039606,
@ -188,7 +188,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
TransactionStateMockHelper(date: 1651039808, amount: Zatoshi(9), uuid: "ii99")
]
return Effect(
return EffectTask(
value:
mocked.map {
let transaction = TransactionState.placeholder(
@ -204,7 +204,7 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
)
}
func getAllTransactions() -> Effect<[WalletEvent], Never> {
func getAllTransactions() -> EffectTask<[WalletEvent]> {
return .merge(
getAllClearedTransactions(),
getAllPendingTransactions()
@ -228,8 +228,8 @@ class TestSDKSynchronizerClient: SDKSynchronizerClient {
zatoshi: Zatoshi,
to recipientAddress: Recipient,
memo: Memo?
) -> Effect<Result<TransactionState, NSError>, Never> {
return Effect(value: Result.failure(SynchronizerError.criticalError as NSError))
) -> EffectTask<Result<TransactionState, NSError>> {
return EffectTask(value: Result.failure(SynchronizerError.criticalError as NSError))
}
func updateStateChanged(_ newState: SDKSynchronizerState) {

View File

@ -45,13 +45,13 @@ struct BalanceBreakdownReducer: ReducerProtocol {
.cancellable(id: CancelId.self, cancelInFlight: true)
case .onDisappear:
return Effect.cancel(id: CancelId.self)
return .cancel(id: CancelId.self)
case .synchronizerStateChanged(.synced):
return Effect(value: .updateSynchronizerStatus)
return EffectTask(value: .updateSynchronizerStatus)
case .synchronizerStateChanged:
return Effect(value: .updateSynchronizerStatus)
return EffectTask(value: .updateSynchronizerStatus)
case .updateSynchronizerStatus:
if let shieldedBalance = sdkSynchronizer.latestScannedSynchronizerState?.shieldedBalance {
@ -60,7 +60,7 @@ struct BalanceBreakdownReducer: ReducerProtocol {
if let transparentBalance = sdkSynchronizer.latestScannedSynchronizerState?.transparentBalance {
state.transparentBalance = transparentBalance
}
return Effect(value: .updateLatestBlock)
return EffectTask(value: .updateLatestBlock)
case .updateLatestBlock:
guard let latestBlockNumber = sdkSynchronizer.latestScannedSynchronizerState?.latestScannedHeight,

View File

@ -110,13 +110,13 @@ struct HomeReducer: ReducerProtocol {
.map(HomeReducer.Action.synchronizerStateChanged)
.eraseToEffect()
.cancellable(id: CancelId.self, cancelInFlight: true)
return .concatenate(Effect(value: .updateDestination(nil)), syncEffect)
return .concatenate(EffectTask(value: .updateDestination(nil)), syncEffect)
} else {
return Effect(value: .updateDestination(.notEnoughFreeDiskSpace))
return EffectTask(value: .updateDestination(.notEnoughFreeDiskSpace))
}
case .onDisappear:
return Effect.cancel(id: CancelId.self)
return .cancel(id: CancelId.self)
case .synchronizerStateChanged(.synced):
return .merge(
@ -124,11 +124,11 @@ struct HomeReducer: ReducerProtocol {
.receive(on: mainQueue)
.map(HomeReducer.Action.updateWalletEvents)
.eraseToEffect(),
Effect(value: .updateSynchronizerStatus)
EffectTask(value: .updateSynchronizerStatus)
)
case .synchronizerStateChanged:
return Effect(value: .updateSynchronizerStatus)
return EffectTask(value: .updateSynchronizerStatus)
case .updateDrawer(let drawerOverlay):
state.drawerOverlay = drawerOverlay
@ -155,7 +155,7 @@ struct HomeReducer: ReducerProtocol {
case .profile(.settings(.quickRescan)):
state.destination = nil
return Effect.task {
return .task {
do {
try await sdkSynchronizer.rewind(.quick)
return .rewindDone(true, .quickRescan)
@ -166,7 +166,7 @@ struct HomeReducer: ReducerProtocol {
case .profile(.settings(.fullRescan)):
state.destination = nil
return Effect.task {
return .task {
do {
try await sdkSynchronizer.rewind(.birthday)
return .rewindDone(true, .fullRescan)
@ -186,23 +186,23 @@ struct HomeReducer: ReducerProtocol {
return .none
case .walletEvents(.updateDestination(.all)):
return state.drawerOverlay != .full ? Effect(value: .updateDrawer(.full)) : .none
return state.drawerOverlay != .full ? EffectTask(value: .updateDrawer(.full)) : .none
case .walletEvents(.updateDestination(.latest)):
return state.drawerOverlay != .partial ? Effect(value: .updateDrawer(.partial)) : .none
return state.drawerOverlay != .partial ? EffectTask(value: .updateDrawer(.partial)) : .none
case .walletEvents:
return .none
case .send(.updateDestination(.done)):
return Effect(value: .updateDestination(nil))
return EffectTask(value: .updateDestination(nil))
case .send:
return .none
case .scan(.found):
audioServices.systemSoundVibrate()
return Effect(value: .updateDestination(nil))
return EffectTask(value: .updateDestination(nil))
case .scan:
return .none

View File

@ -13,9 +13,9 @@ typealias ImportWalletViewStore = ViewStore<ImportWalletReducer.State, ImportWal
struct ImportWalletReducer: ReducerProtocol {
struct State: Equatable {
@BindableState var alert: AlertState<ImportWalletReducer.Action>?
@BindableState var importedSeedPhrase: String = ""
@BindableState var birthdayHeight: String = ""
@BindingState var alert: AlertState<ImportWalletReducer.Action>?
@BindingState var importedSeedPhrase: String = ""
@BindingState var birthdayHeight: String = ""
var wordsCount = 0
var maxWordsCount = 0
var isValidMnemonic = false
@ -111,7 +111,7 @@ struct ImportWalletReducer: ReducerProtocol {
)
)
return Effect(value: .initializeSDK)
return EffectTask(value: .initializeSDK)
} catch {
// TODO: [#221] Proper Error/Success handling (https://github.com/zcash/secant-ios-wallet/issues/221)
state.alert = AlertState(
@ -130,7 +130,7 @@ struct ImportWalletReducer: ReducerProtocol {
return .none
case .successfullyRecovered:
return Effect(value: .dismissAlert)
return EffectTask(value: .dismissAlert)
case .initializeSDK:
return .none

View File

@ -83,7 +83,7 @@ struct RecoveryPhraseValidationFlowReducer: ReducerProtocol {
return effect
} else {
return .concatenate(
Effect(value: .failureFeedback),
EffectTask(value: .failureFeedback),
effect
)
}

View File

@ -110,7 +110,7 @@ extension RootReducer {
guard let url = URL(string: "zcash:\(address)") else {
return .none
}
return Effect(value: .destination(.deeplink(url)))
return EffectTask(value: .destination(.deeplink(url)))
case .home, .initialization, .onboarding, .phraseDisplay, .phraseValidation, .sandbox, .welcome:
return .none

View File

@ -28,7 +28,7 @@ extension RootReducer {
// TODO: [#524] finish all the wallet events according to definition, https://github.com/zcash/secant-ios-wallet/issues/524
LoggerProxy.event(".appDelegate(.didFinishLaunching)")
/// We need to fetch data from keychain, in order to be 100% sure the kecyhain can be read we delay the check a bit
return Effect(value: .initialization(.checkWalletInitialization))
return EffectTask(value: .initialization(.checkWalletInitialization))
.delay(for: 0.02, scheduler: mainQueue)
.eraseToEffect()
@ -39,7 +39,7 @@ extension RootReducer {
walletStorage: walletStorage,
zcashSDKEnvironment: zcashSDKEnvironment
)
return Effect(value: .initialization(.respondToWalletInitializationState(walletState)))
return EffectTask(value: .initialization(.respondToWalletInitializationState(walletState)))
/// Respond to all possible states of the wallet and initiate appropriate side effects including errors handling
case .initialization(.respondToWalletInitializationState(let walletState)):
@ -55,12 +55,12 @@ extension RootReducer {
state.appInitializationState = .filesMissing
}
return .concatenate(
Effect(value: .initialization(.initializeSDK)),
Effect(value: .initialization(.checkBackupPhraseValidation))
EffectTask(value: .initialization(.initializeSDK)),
EffectTask(value: .initialization(.checkBackupPhraseValidation))
)
case .uninitialized:
state.appInitializationState = .uninitialized
return Effect(value: .destination(.updateDestination(.onboarding)))
return EffectTask(value: .destination(.updateDestination(.onboarding)))
.delay(for: 3, scheduler: mainQueue)
.eraseToEffect()
.cancellable(id: CancelId.self, cancelInFlight: true)
@ -129,7 +129,7 @@ extension RootReducer {
state.appInitializationState = .initialized
return Effect(value: .destination(.updateDestination(landingDestination)))
return EffectTask(value: .destination(.updateDestination(landingDestination)))
.delay(for: 3, scheduler: mainQueue)
.eraseToEffect()
.cancellable(id: CancelId.self, cancelInFlight: true)
@ -150,8 +150,8 @@ extension RootReducer {
state.phraseValidationState = randomRecoveryPhrase.random(recoveryPhrase)
return .concatenate(
Effect(value: .initialization(.initializeSDK)),
Effect(value: .phraseValidation(.displayBackedUpPhrase))
EffectTask(value: .initialization(.initializeSDK)),
EffectTask(value: .phraseValidation(.displayBackedUpPhrase))
)
} catch {
// TODO: [#201] - merge with issue 221 (https://github.com/zcash/secant-ios-wallet/issues/221) and its Error States
@ -178,18 +178,18 @@ extension RootReducer {
case .welcome(.debugMenuStartup), .home(.debugMenuStartup):
return .concatenate(
Effect.cancel(id: CancelId.self),
Effect(value: .destination(.updateDestination(.startup)))
EffectTask.cancel(id: CancelId.self),
EffectTask(value: .destination(.updateDestination(.startup)))
)
case .onboarding(.importWallet(.successfullyRecovered)):
return Effect(value: .destination(.updateDestination(.home)))
return EffectTask(value: .destination(.updateDestination(.home)))
case .onboarding(.importWallet(.initializeSDK)):
return Effect(value: .initialization(.initializeSDK))
return EffectTask(value: .initialization(.initializeSDK))
case .onboarding(.createNewWallet):
return Effect(value: .initialization(.createNewWallet))
return EffectTask(value: .initialization(.createNewWallet))
case .home, .destination, .onboarding, .phraseDisplay, .phraseValidation, .sandbox, .welcome:
return .none

View File

@ -65,7 +65,7 @@ struct ScanReducer: ReducerProtocol {
return .none
case .onDisappear:
return Effect.cancel(id: CancelId.self)
return .cancel(id: CancelId.self)
case .found:
return .none
@ -87,8 +87,8 @@ struct ScanReducer: ReducerProtocol {
// once valid URI is scanned we want to start the timer to deliver the code
// any new code cancels the schedule and fires new one
return .concatenate(
Effect.cancel(id: CancelId.self),
Effect(value: .found(code))
EffectTask.cancel(id: CancelId.self),
EffectTask(value: .found(code))
.delay(for: 1.0, scheduler: mainQueue)
.eraseToEffect()
.cancellable(id: CancelId.self, cancelInFlight: true)
@ -97,7 +97,7 @@ struct ScanReducer: ReducerProtocol {
} catch {
state.scanStatus = .failed
}
return Effect.cancel(id: CancelId.self)
return .cancel(id: CancelId.self)
case .torchPressed:
do {

View File

@ -177,27 +177,27 @@ struct SendFlowReducer: ReducerProtocol {
.eraseToEffect()
return .concatenate(
Effect(value: .updateDestination(.inProgress)),
EffectTask(value: .updateDestination(.inProgress)),
sendTransActionEffect
)
} catch {
return Effect(value: .updateDestination(.failure))
return EffectTask(value: .updateDestination(.failure))
}
case .sendTransactionResult(let result):
state.isSendingTransaction = false
do {
_ = try result.get()
return Effect(value: .updateDestination(.success))
return EffectTask(value: .updateDestination(.success))
} catch {
return Effect(value: .updateDestination(.failure))
return EffectTask(value: .updateDestination(.failure))
}
case .transactionAmountInput:
return .none
case .transactionAddressInput(.scanQR):
return Effect(value: .updateDestination(.scanQR))
return EffectTask(value: .updateDestination(.scanQR))
case .transactionAddressInput:
return .none
@ -210,7 +210,7 @@ struct SendFlowReducer: ReducerProtocol {
.cancellable(id: SyncStatusUpdatesID.self, cancelInFlight: true)
case .onDisappear:
return Effect.cancel(id: SyncStatusUpdatesID.self)
return .cancel(id: SyncStatusUpdatesID.self)
case .synchronizerStateChanged(.synced):
if let shieldedBalance = sdkSynchronizer.latestScannedSynchronizerState?.shieldedBalance {
@ -231,7 +231,7 @@ struct SendFlowReducer: ReducerProtocol {
// so we can be sure it's valid and thus `true` value here.
state.transactionAddressInputState.isValidAddress = true
audioServices.systemSoundVibrate()
return Effect(value: .updateDestination(nil))
return EffectTask(value: .updateDestination(nil))
case .scan:
return .none

View File

@ -71,7 +71,7 @@ struct SettingsReducer: ReducerProtocol {
let phraseWords = try mnemonic.asWords(storedWallet.seedPhrase)
let recoveryPhrase = RecoveryPhrase(words: phraseWords)
state.phraseDisplayState.phrase = recoveryPhrase
return Effect(value: .updateDestination(.backupPhrase))
return EffectTask(value: .updateDestination(.backupPhrase))
} catch {
// TODO: [#221] - merge with issue 221 (https://github.com/zcash/secant-ios-wallet/issues/221) and its Error States
return .none

View File

@ -17,7 +17,7 @@ struct WalletEventsFlowReducer: ReducerProtocol {
var destination: Destination?
@BindableState var alert: AlertState<WalletEventsFlowReducer.Action>?
@BindingState var alert: AlertState<WalletEventsFlowReducer.Action>?
var latestMinedHeight: BlockHeight?
var isScrollable = false
var requiredTransactionConfirmations = 0
@ -54,7 +54,7 @@ struct WalletEventsFlowReducer: ReducerProtocol {
.cancellable(id: CancelId.self, cancelInFlight: true)
case .onDisappear:
return Effect.cancel(id: CancelId.self)
return .cancel(id: CancelId.self)
case .synchronizerStateChanged(.synced):
if let latestMinedHeight = sdkSynchronizer.synchronizer?.latestScannedHeight {

View File

@ -56,14 +56,14 @@ struct TransactionAmountTextFieldReducer: ReducerProtocol {
let decimalString = numberFormatter.string(maxCurrencyConvertedValue) ?? ""
state.textFieldState.text = "\(decimalString)"
return Effect(value: .updateAmount)
return EffectTask(value: .updateAmount)
case .clearValue:
state.textFieldState.text = ""
return .none
case .textField(.set):
return Effect(value: .updateAmount)
return EffectTask(value: .updateAmount)
case .updateAmount:
guard let number = numberFormatter.number(state.textFieldState.text) else {
@ -93,7 +93,7 @@ struct TransactionAmountTextFieldReducer: ReducerProtocol {
let decimalString = numberFormatter.string(NSDecimalNumber(decimal: newValue)) ?? ""
state.textFieldState.text = "\(decimalString)"
return Effect(value: .updateAmount)
return EffectTask(value: .updateAmount)
}
}
}

View File

@ -36,10 +36,10 @@ struct LottieAnimation: UIViewRepresentable {
}
}
func makeUIView(context: UIViewRepresentableContext<LottieAnimation>) -> AnimationView {
let animationView = AnimationView()
func makeUIView(context: UIViewRepresentableContext<LottieAnimation>) -> LottieAnimationView {
let animationView = LottieAnimationView()
let animation = Lottie.Animation.named(filename)
let animation = Lottie.LottieAnimation.named(filename)
animationView.backgroundBehavior = .pauseAndRestore
animationView.animation = animation
@ -52,7 +52,7 @@ struct LottieAnimation: UIViewRepresentable {
Coordinator(parent: self)
}
func updateUIView(_ uiView: AnimationView, context: UIViewRepresentableContext<LottieAnimation>) {
func updateUIView(_ uiView: LottieAnimationView, context: UIViewRepresentableContext<LottieAnimation>) {
guard isPlaying else {
uiView.stop()
return