fix: clean up wallet favorites state

This commit is contained in:
TerryM
2026-06-02 00:57:37 +08:00
parent 05c2252b49
commit fc2ca62957
3 changed files with 43 additions and 39 deletions

View File

@@ -21,7 +21,8 @@ type ModalState = "idle" | "tpLoading" | "tpPolling" | "rainbowSigning";
export function WalletLoginModal() {
const { t } = useI18n();
const { showToast } = useToast();
const wallet = useWallet();
const { closeLoginModal, completeLogin, loginModalOpen, signInInjected } =
useWallet();
const { openConnectModal } = useConnectModal();
const { address, isConnected } = useAccount();
const { signMessageAsync } = useSignMessage();
@@ -35,12 +36,12 @@ export function WalletLoginModal() {
const close = () => {
if (state === "tpLoading" || state === "rainbowSigning") return;
wallet.closeLoginModal();
closeLoginModal();
setError("");
};
useEffect(() => {
if (!wallet.loginModalOpen || !tpRequest) return;
if (!loginModalOpen || !tpRequest) return;
if (state !== "tpPolling") return;
let cancelled = false;
@@ -55,7 +56,7 @@ export function WalletLoginModal() {
signature: result.signature,
});
if (cancelled) return;
wallet.completeLogin(verified.token, verified.wallet);
completeLogin(verified.token, verified.wallet);
showToast(t("walletLoginSuccess"));
setState("idle");
setTpRequest(null);
@@ -76,7 +77,7 @@ export function WalletLoginModal() {
cancelled = true;
window.clearInterval(timer);
};
}, [state, tpRequest, t, showToast, wallet]);
}, [completeLogin, loginModalOpen, state, tpRequest, t, showToast]);
useEffect(() => {
if (!rainbowPending || !isConnected || !address) return;
@@ -94,7 +95,7 @@ export function WalletLoginModal() {
message: nonce.message,
signature,
});
wallet.completeLogin(verified.token, verified.wallet);
completeLogin(verified.token, verified.wallet);
showToast(t("walletLoginSuccess"));
} catch (err) {
const message =
@@ -114,15 +115,15 @@ export function WalletLoginModal() {
showToast,
signMessageAsync,
t,
wallet,
completeLogin,
]);
if (!wallet.loginModalOpen) return null;
if (!loginModalOpen) return null;
const startInjected = async () => {
setError("");
setState("idle");
await wallet.signInInjected().catch(() => undefined);
await signInInjected().catch(() => undefined);
};
const startTokenPocketQr = async () => {