feat: connect wallet favorites to backend
This commit is contained in:
@@ -7,7 +7,7 @@ import {
|
||||
getInjectedWallet,
|
||||
type WalletKind,
|
||||
} from "./injected";
|
||||
import { localWalletToken, useWallet } from "./WalletProvider";
|
||||
import { useWallet } from "./WalletProvider";
|
||||
|
||||
export type WalletConnectLoginState = "idle" | "connecting" | "signing";
|
||||
export type WalletConnectLoginMode = "deeplink" | "qr";
|
||||
@@ -96,7 +96,7 @@ function connectorMatchesWallet(
|
||||
|
||||
export function useWalletConnectLogin() {
|
||||
const available = hasWalletConnectProjectId();
|
||||
const { address: localAddress, completeLogin } = useWallet();
|
||||
const { address: localAddress, loginAddress } = useWallet();
|
||||
const { address: wagmiAddress, isConnected: wagmiConnected } = useAccount();
|
||||
const { connectAsync, connectors } = useConnect();
|
||||
const { disconnectAsync } = useDisconnect();
|
||||
@@ -140,12 +140,17 @@ export function useWalletConnectLogin() {
|
||||
chain: "BNB Chain",
|
||||
chainId: bsc.id,
|
||||
});
|
||||
completeLogin(localWalletToken(wagmiAddress), wagmiAddress);
|
||||
console.info("[wallet-login] local wallet session completed", {
|
||||
address: wagmiAddress,
|
||||
});
|
||||
void loginAddress(wagmiAddress)
|
||||
.then(() => {
|
||||
console.info("[wallet-login] wallet session completed", {
|
||||
address: wagmiAddress,
|
||||
});
|
||||
})
|
||||
.catch((err: unknown) => {
|
||||
setError(err instanceof Error ? err.message : "Wallet login failed");
|
||||
});
|
||||
}
|
||||
}, [completeLogin, localAddress, wagmiAddress, wagmiConnected]);
|
||||
}, [localAddress, loginAddress, wagmiAddress, wagmiConnected]);
|
||||
|
||||
const start = useCallback(
|
||||
async (
|
||||
@@ -173,7 +178,7 @@ export function useWalletConnectLogin() {
|
||||
chain: "BNB Chain",
|
||||
chainId: bsc.id,
|
||||
});
|
||||
completeLogin(localWalletToken(injectedAddress), injectedAddress);
|
||||
await loginAddress(injectedAddress);
|
||||
setState("idle");
|
||||
return;
|
||||
} catch (err) {
|
||||
@@ -256,10 +261,17 @@ export function useWalletConnectLogin() {
|
||||
chain: "BNB Chain",
|
||||
chainId: bsc.id,
|
||||
});
|
||||
completeLogin(localWalletToken(address), address);
|
||||
console.info("[wallet-login] local wallet session completed", {
|
||||
address,
|
||||
});
|
||||
void loginAddress(address)
|
||||
.then(() => {
|
||||
console.info("[wallet-login] wallet session completed", {
|
||||
address,
|
||||
});
|
||||
})
|
||||
.catch((err: unknown) => {
|
||||
setError(
|
||||
err instanceof Error ? err.message : "Wallet login failed",
|
||||
);
|
||||
});
|
||||
};
|
||||
const pollId = window.setInterval(() => {
|
||||
void connector
|
||||
@@ -293,7 +305,7 @@ export function useWalletConnectLogin() {
|
||||
cleanupPollingRef.current = null;
|
||||
}
|
||||
},
|
||||
[available, completeLogin, connectAsync, connectors, disconnectAsync],
|
||||
[available, connectAsync, connectors, disconnectAsync, loginAddress],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user