diff --git a/src/components/Body/index.tsx b/src/components/Body/index.tsx index 27be527..69e104f 100644 --- a/src/components/Body/index.tsx +++ b/src/components/Body/index.tsx @@ -104,6 +104,19 @@ function Body() { const addressFromURL = new URLSearchParams(window.location.search).get( "address" ); + const urlFromURL = new URLSearchParams(window.location.search).get("url"); + const chainFromURL = new URLSearchParams(window.location.search).get("chain"); + let networkIndexViaURL = 0; + if (chainFromURL) { + for (let i = 0; i < networkInfo.length; i++) { + if ( + networkInfo[i].name.toLowerCase().includes(chainFromURL.toLowerCase()) + ) { + networkIndexViaURL = i; + break; + } + } + } const toast = useToast(); const { onOpen, onClose, isOpen } = useDisclosure(); const { isOpen: tableIsOpen, onToggle: tableOnToggle } = useDisclosure(); @@ -127,21 +140,23 @@ function Body() { const [address, setAddress] = useState(addressFromURL ?? ""); // internal resolved address const [isAddressValid, setIsAddressValid] = useState(true); const [uri, setUri] = useState(""); - const [networkIndex, setNetworkIndex] = useState(0); + const [networkIndex, setNetworkIndex] = useState(networkIndexViaURL); const [connector, setConnector] = useState(); const [peerMeta, setPeerMeta] = useState(); const [isConnected, setIsConnected] = useState(false); const [loading, setLoading] = useState(false); const tabs = ["WalletConnect", "iFrame", "Extension"]; - const [selectedTabIndex, setSelectedTabIndex] = useState(0); + const [selectedTabIndex, setSelectedTabIndex] = useState(urlFromURL ? 1 : 0); const [isIFrameLoading, setIsIFrameLoading] = useState(false); const [safeDapps, setSafeDapps] = useState<{ [networkIndex: number]: SafeDappInfo[]; }>({}); const [searchSafeDapp, setSearchSafeDapp] = useState(); const [filteredSafeDapps, setFilteredSafeDapps] = useState(); - const [inputAppUrl, setInputAppUrl] = useState(); + const [inputAppUrl, setInputAppUrl] = useState( + urlFromURL ?? undefined + ); const [iframeKey, setIframeKey] = useState(0); // hacky way to reload iframe when key changes const [tenderlyForkId, setTenderlyForkId] = useState(""); @@ -195,6 +210,12 @@ function Body() { setTenderlyForkId(storedTenderlyForkId ? storedTenderlyForkId : ""); }, []); + useEffect(() => { + if (provider && addressFromURL && urlFromURL) { + initIFrame(); + } + }, [provider]); + useEffect(() => { if (connector) { subscribeToEvents();