mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-30 10:32:19 -05:00
f375362894
* Always use mockable location methods * Add eslint rules for window.location calls/assignment * Add useLocation hook * Update tests GitOrigin-RevId: eafb846db89f884a7a9a8570cce7745be605152c
25 lines
606 B
TypeScript
25 lines
606 B
TypeScript
import { useCallback, useMemo } from 'react'
|
|
import useIsMounted from './use-is-mounted'
|
|
|
|
export const useLocation = () => {
|
|
const isMounted = useIsMounted()
|
|
|
|
const assign = useCallback(
|
|
url => {
|
|
if (isMounted.current) {
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
window.location.assign(url)
|
|
}
|
|
},
|
|
[isMounted]
|
|
)
|
|
|
|
const reload = useCallback(() => {
|
|
if (isMounted.current) {
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
window.location.reload()
|
|
}
|
|
}, [isMounted])
|
|
|
|
return useMemo(() => ({ assign, reload }), [assign, reload])
|
|
}
|