diff --git a/TangemSdk/TangemSdk/Operations/Derivation/DeriveMultipleWalletPublicKeysTask.swift b/TangemSdk/TangemSdk/Operations/Derivation/DeriveMultipleWalletPublicKeysTask.swift index 52387064..2be2beef 100644 --- a/TangemSdk/TangemSdk/Operations/Derivation/DeriveMultipleWalletPublicKeysTask.swift +++ b/TangemSdk/TangemSdk/Operations/Derivation/DeriveMultipleWalletPublicKeysTask.swift @@ -43,7 +43,12 @@ public class DeriveMultipleWalletPublicKeysTask: CardSessionRunnable { self.response[derivation.0] = derivedKeys self.derive(index: index + 1, in: session, completion: completion) case .failure(let error): - completion(.failure(error)) + if self.response.isEmpty { + completion(.failure(error)) + } else { + // return partial response + completion(.success(self.response)) + } } } } diff --git a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift index 76f2b963..18438d89 100644 --- a/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift +++ b/TangemSdk/TangemSdk/Operations/Derivation/DeriveWalletPublicKeysTask.swift @@ -47,9 +47,16 @@ public class DeriveWalletPublicKeysTask: CardSessionRunnable { case .failure(let error): switch error { case .nonHardenedDerivationNotSupported, .walletNotFound, .unsupportedCurve: + // continue derivation Log.error(error) default: - completion(.failure(error)) + if keys.keys.isEmpty { + completion(.failure(error)) + } else { + Log.error(error) + // return partial response + completion(.success(keys)) + } return } }