overleaf/services/web/frontend/js/shared/hooks/use-wait-for-grammarly-check.ts

30 lines
919 B
TypeScript
Raw Normal View History

import { useEffect, useState } from 'react'
/**
*
* @param {number} delay how long to wait before checking for grammarly in ms
* @param {boolean} initialState the initial state we should set grammarlyInstalled to before checking after the delay
* @returns {boolean} a stateful boolean which is initially false, then updates to reflect whether grammarly is installed after the delay to check
*/
export default function useWaitForGrammarlyCheck({
delay = 3000,
initialState = false,
}) {
const [grammarlyInstalled, setGrammarlyInstalled] = useState(() => {
return initialState
})
useEffect(() => {
const timer = setTimeout(
() => setGrammarlyInstalled(grammarlyExtensionPresent()),
delay
)
return () => clearTimeout(timer)
}, [delay])
return grammarlyInstalled
}
function grammarlyExtensionPresent() {
return !!document.querySelector('grammarly-desktop-integration')
}