diff --git a/packages/komodo_defi_sdk/lib/src/komodo_defi_sdk.dart b/packages/komodo_defi_sdk/lib/src/komodo_defi_sdk.dart index a9375943..2e819d53 100644 --- a/packages/komodo_defi_sdk/lib/src/komodo_defi_sdk.dart +++ b/packages/komodo_defi_sdk/lib/src/komodo_defi_sdk.dart @@ -315,6 +315,16 @@ class KomodoDefiSdk with SecureRpcPasswordMixin { : KomodoDefiLocalAuth.storedAuthOptions(user.walletId.name); } + Future _disposeIfRegistered(Future Function(T) fn) async { + if (_container.isRegistered()) { + try { + await fn(_container()); + } catch (e) { + log('Error disposing $T: $e'); + } + } + } + /// Disposes of this SDK instance and cleans up all resources. /// /// This should be called when the SDK is no longer needed to ensure proper @@ -333,6 +343,7 @@ class KomodoDefiSdk with SecureRpcPasswordMixin { _isDisposed = true; if (!_isInitialized) return; _isInitialized = false; + _initializationFuture = null; if (stopKdf) { try { @@ -343,6 +354,17 @@ class KomodoDefiSdk with SecureRpcPasswordMixin { } } + await Future.wait([ + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + _disposeIfRegistered((m) => m.dispose()), + ]); + // Reset scoped container await _container.reset();