diff --git a/.changeset/okx-disconnect-fix.md b/.changeset/okx-disconnect-fix.md new file mode 100644 index 0000000..ea0365f --- /dev/null +++ b/.changeset/okx-disconnect-fix.md @@ -0,0 +1,5 @@ +--- +"@satoshai/kit": patch +--- + +Fix OKX connect failure disconnecting the wrong provider by skipping the generic disconnect path for OKX, which uses its own SDK directly. diff --git a/packages/kit/src/provider/stacks-wallet-provider.tsx b/packages/kit/src/provider/stacks-wallet-provider.tsx index be02870..d71641b 100644 --- a/packages/kit/src/provider/stacks-wallet-provider.tsx +++ b/packages/kit/src/provider/stacks-wallet-provider.tsx @@ -216,8 +216,13 @@ export const StacksWalletProvider = ({ } catch (error) { if (connectGenRef.current !== gen) return; console.error('Failed to connect wallet:', error); - getSelectedProvider()?.disconnect?.(); - clearSelectedProviderId(); + // OKX uses its own SDK and never calls setSelectedProviderId, + // so getSelectedProvider() would return the previously connected + // provider — disconnecting the wrong wallet. + if (typedProvider !== 'okx') { + getSelectedProvider()?.disconnect?.(); + clearSelectedProviderId(); + } options?.onError?.(error as Error); } finally { if (connectGenRef.current === gen) {