Skip to content

Commit

Permalink
Allow Disconnect of MWA (#960)
Browse files Browse the repository at this point in the history
* can disconnect

* add back setting unloading to flase

* default to mwa if no other adapters around

* always disconect

* preserve old logic, but only if adapters with standard wallet adapters is empty

* need to flip the boolean

* remove MWA checks outright

* auto select mobile wallet adapter if no other
  • Loading branch information
alex-fung authored Aug 23, 2024
1 parent f326fb9 commit d8632b4
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions packages/core/react/src/WalletProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,14 @@ export function WalletProvider({
}
return [mobileWalletAdapter, ...adaptersWithStandardAdapters];
}, [adaptersWithStandardAdapters, mobileWalletAdapter]);
const [walletName, setWalletName] = useLocalStorage<WalletName | null>(
localStorageKey,
getIsMobile(adaptersWithStandardAdapters) ? SolanaMobileWalletAdapterWalletName : null
);
const [walletName, setWalletName] = useLocalStorage<WalletName | null>(localStorageKey, null);
const adapter = useMemo(
() => adaptersWithMobileWalletAdapter.find((a) => a.name === walletName) ?? null,
[adaptersWithMobileWalletAdapter, walletName]
() =>
adaptersWithMobileWalletAdapter.find((a) => a.name === walletName) ??
(adaptersWithMobileWalletAdapter.length === 1 && adaptersWithMobileWalletAdapter[0] === mobileWalletAdapter
? mobileWalletAdapter
: null),
[adaptersWithMobileWalletAdapter, walletName, mobileWalletAdapter]
);
const changeWallet = useCallback(
(nextWalletName: WalletName<string> | null) => {
Expand All @@ -105,8 +106,6 @@ export function WalletProvider({
if (!adapter) return;
function handleDisconnect() {
if (isUnloadingRef.current) return;
// Leave the adapter selected in the event of a disconnection.
if (walletName === SolanaMobileWalletAdapterWalletName && getIsMobile(adaptersWithStandardAdapters)) return;
setWalletName(null);
}
adapter.on('disconnect', handleDisconnect);
Expand Down Expand Up @@ -150,7 +149,7 @@ export function WalletProvider({
};
}, [adaptersWithStandardAdapters, walletName]);
const handleConnectError = useCallback(() => {
if (adapter && adapter.name !== SolanaMobileWalletAdapterWalletName) {
if (adapter) {
// If any error happens while connecting, unset the adapter.
changeWallet(null);
}
Expand Down

0 comments on commit d8632b4

Please sign in to comment.