From 2ffb346e35f92dde89d5bd2aab6409b29c32c189 Mon Sep 17 00:00:00 2001 From: Alexander Osokin Date: Mon, 4 Mar 2024 17:13:04 +0000 Subject: [PATCH 1/2] IOS-5986 Skip derivation errors --- .../Derivation/DeriveWalletPublicKeysTask.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift index 7168b1cac..a5205ab43 100644 --- a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift +++ b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift @@ -39,14 +39,16 @@ public class DeriveWalletPublicKeysTask: CardSessionRunnable { let path = derivationPaths[index] let task = DeriveWalletPublicKeyTask(walletPublicKey: walletPublicKey, derivationPath: path) task.run(in: session) { result in + var keys = keys + switch result { case .success(let key): - var keys = keys keys[path] = key - self.runDerivation(at: index + 1, keys: keys, in: session, completion: completion) case .failure(let error): - completion(.failure(error)) + Log.error(error) } + + self.runDerivation(at: index + 1, keys: keys, in: session, completion: completion) } } } From 25e83ac522908fddf98d2d1ee427e12dd65b64e1 Mon Sep 17 00:00:00 2001 From: Alexander Osokin Date: Tue, 5 Mar 2024 18:14:00 +0000 Subject: [PATCH 2/2] IOS-5986 Ignore only concrete errors --- .../Derivation/DeriveWalletPublicKeysTask.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift index a5205ab43..76f2b963e 100644 --- a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift +++ b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift @@ -40,12 +40,18 @@ public class DeriveWalletPublicKeysTask: CardSessionRunnable { let task = DeriveWalletPublicKeyTask(walletPublicKey: walletPublicKey, derivationPath: path) task.run(in: session) { result in var keys = keys - + switch result { case .success(let key): keys[path] = key case .failure(let error): - Log.error(error) + switch error { + case .nonHardenedDerivationNotSupported, .walletNotFound, .unsupportedCurve: + Log.error(error) + default: + completion(.failure(error)) + return + } } self.runDerivation(at: index + 1, keys: keys, in: session, completion: completion)