Fix accounts fetch after checking network in wallet

This commit is contained in:
Nabarun 2025-06-17 12:31:48 +05:30
parent ede8c666e1
commit 39da84d81a
9 changed files with 31 additions and 20 deletions

View File

@ -15,7 +15,6 @@ VITE_GITHUB_CLIENT_ID = 'LACONIC_HOSTED_CONFIG_github_clientid'
VITE_GITHUB_PWA_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_pwa_templaterepo' VITE_GITHUB_PWA_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_pwa_templaterepo'
VITE_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_image_upload_templaterepo' VITE_GITHUB_IMAGE_UPLOAD_PWA_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_image_upload_templaterepo'
VITE_GITHUB_NEXT_APP_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_next_app_templaterepo' VITE_GITHUB_NEXT_APP_TEMPLATE_REPO = 'LACONIC_HOSTED_CONFIG_github_next_app_templaterepo'
VITE_LACONICD_CHAIN_ID = 'LACONIC_HOSTED_CONFIG_laconicd_chain_id'
VITE_WALLET_IFRAME_URL = 'LACONIC_HOSTED_CONFIG_wallet_iframe_url' VITE_WALLET_IFRAME_URL = 'LACONIC_HOSTED_CONFIG_wallet_iframe_url'
VITE_LIT_RELAY_API_KEY = 'LACONIC_HOSTED_CONFIG_lit_relay_api_key' VITE_LIT_RELAY_API_KEY = 'LACONIC_HOSTED_CONFIG_lit_relay_api_key'
VITE_BUGSNAG_API_KEY = 'LACONIC_HOSTED_CONFIG_bugsnag_api_key' VITE_BUGSNAG_API_KEY = 'LACONIC_HOSTED_CONFIG_bugsnag_api_key'

View File

@ -14,5 +14,6 @@
"prepare": "husky install", "prepare": "husky install",
"build": "lerna run build --stream", "build": "lerna run build --stream",
"lint": "lerna run lint --stream" "lint": "lerna run lint --stream"
} },
} "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"
}

View File

@ -12,5 +12,4 @@ VITE_BUGSNAG_API_KEY=
VITE_PASSKEY_WALLET_RPID= VITE_PASSKEY_WALLET_RPID=
VITE_TURNKEY_API_BASE_URL= VITE_TURNKEY_API_BASE_URL=
VITE_LACONICD_CHAIN_ID=
VITE_WALLET_IFRAME_URL= VITE_WALLET_IFRAME_URL=

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -3,7 +3,6 @@ import { useCallback, useEffect } from 'react';
import { Box, Modal } from '@mui/material'; import { Box, Modal } from '@mui/material';
import { import {
VITE_LACONICD_CHAIN_ID,
VITE_WALLET_IFRAME_URL, VITE_WALLET_IFRAME_URL,
} from 'utils/constants'; } from 'utils/constants';
import { REQUEST_WALLET_ACCOUNTS, WALLET_ACCOUNTS_DATA } from '../../../constants'; import { REQUEST_WALLET_ACCOUNTS, WALLET_ACCOUNTS_DATA } from '../../../constants';
@ -18,7 +17,7 @@ const ApproveTransactionModal = ({
setIsDataReceived: (isReceived: boolean) => void; setIsDataReceived: (isReceived: boolean) => void;
isVisible: boolean; isVisible: boolean;
}) => { }) => {
const { setIframe, isNetworkAvailable } = useAddNetwork(); const { setIframe, isNetworkAvailable, networkData } = useAddNetwork();
useEffect(() => { useEffect(() => {
const handleMessage = (event: MessageEvent) => { const handleMessage = (event: MessageEvent) => {
@ -28,7 +27,7 @@ const ApproveTransactionModal = ({
setIsDataReceived(true); setIsDataReceived(true);
if (event.data.data.length === 0) { if (event.data.data.length === 0) {
console.error(`Accounts not present for chainId: ${VITE_LACONICD_CHAIN_ID}`); console.error(`Accounts not present for chainId: ${networkData?.chainId}`);
return; return;
} }
@ -45,9 +44,14 @@ const ApproveTransactionModal = ({
return () => { return () => {
window.removeEventListener('message', handleMessage); window.removeEventListener('message', handleMessage);
}; };
}, []); }, [networkData]);
const getDataFromWallet = useCallback(() => { const getDataFromWallet = useCallback(() => {
if (!networkData) {
console.error('networkData should not be empty');
return;
}
const iframe = document.getElementById('walletIframe') as HTMLIFrameElement; const iframe = document.getElementById('walletIframe') as HTMLIFrameElement;
if (!iframe.contentWindow) { if (!iframe.contentWindow) {
@ -58,14 +62,16 @@ const ApproveTransactionModal = ({
iframe.contentWindow.postMessage( iframe.contentWindow.postMessage(
{ {
type: REQUEST_WALLET_ACCOUNTS, type: REQUEST_WALLET_ACCOUNTS,
chainId: VITE_LACONICD_CHAIN_ID, chainId: networkData.chainId,
}, },
VITE_WALLET_IFRAME_URL, VITE_WALLET_IFRAME_URL,
); );
}, []); }, [networkData]);
useEffect(() => { useEffect(() => {
getDataFromWallet() if (isNetworkAvailable) {
getDataFromWallet();
}
}, [isNetworkAvailable, getDataFromWallet]) }, [isNetworkAvailable, getDataFromWallet])
return ( return (

View File

@ -25,10 +25,10 @@ import ApproveTransactionModal from './ApproveTransactionModal';
import EnvironmentVariablesForm from 'pages/org-slug/projects/id/settings/EnvironmentVariablesForm'; import EnvironmentVariablesForm from 'pages/org-slug/projects/id/settings/EnvironmentVariablesForm';
import { EnvironmentVariablesFormValues } from 'types/types'; import { EnvironmentVariablesFormValues } from 'types/types';
import { import {
VITE_LACONICD_CHAIN_ID,
VITE_WALLET_IFRAME_URL, VITE_WALLET_IFRAME_URL,
} from 'utils/constants'; } from 'utils/constants';
import CheckBalanceIframe from './CheckBalanceIframe'; import CheckBalanceIframe from './CheckBalanceIframe';
import { useAddNetwork } from '../../../hooks/useAddNetwork';
type ConfigureDeploymentFormValues = { type ConfigureDeploymentFormValues = {
option: string; option: string;
@ -71,6 +71,7 @@ const Configure = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const { toast, dismiss } = useToast(); const { toast, dismiss } = useToast();
const client = useGQLClient(); const client = useGQLClient();
const { networkData } = useAddNetwork()
const methods = useForm<ConfigureFormValues>({ const methods = useForm<ConfigureFormValues>({
defaultValues: { defaultValues: {
@ -421,7 +422,7 @@ const Configure = () => {
iframe.contentWindow.postMessage( iframe.contentWindow.postMessage(
{ {
type: 'REQUEST_TX', type: 'REQUEST_TX',
chainId: VITE_LACONICD_CHAIN_ID, chainId: networkData?.chainId,
fromAddress: sender, fromAddress: sender,
toAddress: recipient, toAddress: recipient,
amount, amount,

View File

@ -1,5 +1,5 @@
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import { VITE_LACONICD_CHAIN_ID, VITE_WALLET_IFRAME_URL } from 'utils/constants'; import { VITE_WALLET_IFRAME_URL } from 'utils/constants';
import { NETWORK_ADD_FAILED_RESPONSE, NETWORK_ADDED_RESPONSE, NETWORK_ALREADY_EXISTS_RESPONSE, REQUEST_ADD_NETWORK } from '../constants'; import { NETWORK_ADD_FAILED_RESPONSE, NETWORK_ADDED_RESPONSE, NETWORK_ALREADY_EXISTS_RESPONSE, REQUEST_ADD_NETWORK } from '../constants';
interface NetworkData { interface NetworkData {
@ -26,14 +26,13 @@ export const useAddNetwork = () => {
} }
if (!iframe?.contentWindow) { if (!iframe?.contentWindow) {
console.error('iframe not loaded');
return; return;
} }
iframe.contentWindow.postMessage( iframe.contentWindow.postMessage(
{ {
type: REQUEST_ADD_NETWORK, type: REQUEST_ADD_NETWORK,
chainId: VITE_LACONICD_CHAIN_ID, chainId: networkData.chainId,
networkData, networkData,
}, },
VITE_WALLET_IFRAME_URL, VITE_WALLET_IFRAME_URL,
@ -87,6 +86,7 @@ export const useAddNetwork = () => {
return { return {
networkData, networkData,
isNetworkAvailable, isNetworkAvailable,
iframe,
setIframe setIframe
}; };
}; };

View File

@ -1,11 +1,17 @@
import { useState, useEffect, useCallback } from 'react'; import { useState, useEffect, useCallback } from 'react';
import { VITE_LACONICD_CHAIN_ID } from 'utils/constants'; import { useAddNetwork } from './useAddNetwork';
const useCheckBalance = (amount: string, iframeId: string) => { const useCheckBalance = (amount: string, iframeId: string) => {
const [isBalanceSufficient, setIsBalanceSufficient] = useState<boolean>(); const [isBalanceSufficient, setIsBalanceSufficient] = useState<boolean>();
const { networkData } = useAddNetwork()
const checkBalance = useCallback(() => { const checkBalance = useCallback(() => {
if (!networkData) {
return;
}
const iframe = document.getElementById(iframeId) as HTMLIFrameElement; const iframe = document.getElementById(iframeId) as HTMLIFrameElement;
if (!iframe || !iframe.contentWindow) { if (!iframe || !iframe.contentWindow) {
@ -16,12 +22,12 @@ const useCheckBalance = (amount: string, iframeId: string) => {
iframe.contentWindow.postMessage( iframe.contentWindow.postMessage(
{ {
type: 'CHECK_BALANCE', type: 'CHECK_BALANCE',
chainId: VITE_LACONICD_CHAIN_ID, chainId: networkData.chainId,
amount, amount,
}, },
import.meta.env.VITE_WALLET_IFRAME_URL import.meta.env.VITE_WALLET_IFRAME_URL
); );
}, [iframeId, amount]); }, [iframeId, amount, networkData]);
useEffect(() => { useEffect(() => {
const handleMessage = (event: MessageEvent) => { const handleMessage = (event: MessageEvent) => {

View File

@ -10,5 +10,4 @@ export const VITE_GITHUB_NEXT_APP_TEMPLATE_REPO = import.meta.env
export const VITE_GITHUB_CLIENT_ID = import.meta.env.VITE_GITHUB_CLIENT_ID; export const VITE_GITHUB_CLIENT_ID = import.meta.env.VITE_GITHUB_CLIENT_ID;
export const VITE_BUGSNAG_API_KEY = import.meta.env.VITE_BUGSNAG_API_KEY; export const VITE_BUGSNAG_API_KEY = import.meta.env.VITE_BUGSNAG_API_KEY;
export const VITE_LIT_RELAY_API_KEY = import.meta.env.VITE_LIT_RELAY_API_KEY; export const VITE_LIT_RELAY_API_KEY = import.meta.env.VITE_LIT_RELAY_API_KEY;
export const VITE_LACONICD_CHAIN_ID = import.meta.env.VITE_LACONICD_CHAIN_ID;
export const VITE_WALLET_IFRAME_URL = import.meta.env.VITE_WALLET_IFRAME_URL; export const VITE_WALLET_IFRAME_URL = import.meta.env.VITE_WALLET_IFRAME_URL;