* fix: clear the previous DOM elements after page redirect * fix: removed await delay since it can take awhile to destroy the sketch * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * fix: added E2E test which actually caught a logic bug, moved the logic to the correct location * fix: removing unused import * fix: push main back... * fix: restoring code to old state * fix: moved cleanup code * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { useEffect, useState, createContext, ReactNode } from 'react'
|
|
import { useNavigation, useLocation } from 'react-router-dom'
|
|
import { PATHS } from 'lib/paths'
|
|
import { markOnce } from 'lib/performance'
|
|
|
|
export const RouteProviderContext = createContext({})
|
|
|
|
export function RouteProvider({ children }: { children: ReactNode }) {
|
|
const [first, setFirstState] = useState(true)
|
|
const navigation = useNavigation()
|
|
const location = useLocation()
|
|
|
|
useEffect(() => {
|
|
// On initialization, the react-router-dom does not send a 'loading' state event.
|
|
// it sends an idle event first.
|
|
const pathname = first ? location.pathname : navigation.location?.pathname
|
|
const isHome = pathname === PATHS.HOME
|
|
const isFile =
|
|
pathname?.includes(PATHS.FILE) &&
|
|
pathname?.substring(pathname?.length - 4) === '.kcl'
|
|
if (isHome) {
|
|
markOnce('code/willLoadHome')
|
|
} else if (isFile) {
|
|
markOnce('code/willLoadFile')
|
|
}
|
|
setFirstState(false)
|
|
}, [navigation])
|
|
|
|
return (
|
|
<RouteProviderContext.Provider value={{}}>
|
|
{children}
|
|
</RouteProviderContext.Provider>
|
|
)
|
|
}
|