Commit ae559d16 authored by Vignesh Mohankumar's avatar Vignesh Mohankumar Committed by GitHub

fix: use `chain` query param properly when activating (#6114)

* fix: use `chain` query param properly when activating

* move

* Update src/hooks/useSyncChainQuery.ts
Co-authored-by: default avatarJordan Frankfurt <jordanwfrankfurt@gmail.com>

---------
Co-authored-by: default avatarJordan Frankfurt <jordanwfrankfurt@gmail.com>
parent a90318cb
...@@ -32,6 +32,8 @@ export default function useSyncChainQuery() { ...@@ -32,6 +32,8 @@ export default function useSyncChainQuery() {
// Can't use `usePrevious` because `chainId` can be undefined while activating. // Can't use `usePrevious` because `chainId` can be undefined while activating.
const [previousChainId, setPreviousChainId] = useState<number | undefined>(undefined) const [previousChainId, setPreviousChainId] = useState<number | undefined>(undefined)
const [nextChainId, setNextChainId] = useState<number | undefined>(undefined)
useEffect(() => { useEffect(() => {
if (chainId && chainId !== previousChainId) { if (chainId && chainId !== previousChainId) {
setPreviousChainId(chainId) setPreviousChainId(chainId)
...@@ -40,14 +42,21 @@ export default function useSyncChainQuery() { ...@@ -40,14 +42,21 @@ export default function useSyncChainQuery() {
const [searchParams, setSearchParams] = useSearchParams() const [searchParams, setSearchParams] = useSearchParams()
const chainQueryManuallyUpdated = urlChainId && urlChainId !== previousUrlChainId && isActive useEffect(() => {
const chainQueryManuallyUpdated = urlChainId && urlChainId !== previousUrlChainId
if (chainQueryManuallyUpdated) {
setNextChainId(urlChainId)
}
}, [previousUrlChainId, urlChainId])
return useEffect(() => { return useEffect(() => {
if (chainQueryManuallyUpdated) { if (nextChainId && isActive) {
// If the query param changed, and the chain didn't change, then activate the new chain // If the query param changed, and the chain didn't change, then activate the new chain
selectChain(urlChainId) selectChain(nextChainId).then(() => {
searchParams.delete('chain') searchParams.delete('chain')
setSearchParams(searchParams) setSearchParams(searchParams)
setNextChainId(undefined)
})
} }
}, [chainQueryManuallyUpdated, urlChainId, selectChain, searchParams, setSearchParams]) }, [nextChainId, urlChainId, selectChain, searchParams, setSearchParams, isActive])
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment