2022-03-31 07:22:36 -04:00
|
|
|
import { useCallback } from 'react'
|
|
|
|
import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context'
|
2021-11-30 09:54:14 -05:00
|
|
|
import useEventListener from '../../../shared/hooks/use-event-listener'
|
|
|
|
import useDetachAction from '../../../shared/hooks/use-detach-action'
|
|
|
|
|
|
|
|
export default function useCompileTriggers() {
|
2022-03-31 07:22:36 -04:00
|
|
|
const { startCompile, setChangedAt } = useCompileContext()
|
2021-11-30 09:54:14 -05:00
|
|
|
|
|
|
|
// recompile on key press
|
|
|
|
const startOrTriggerCompile = useDetachAction(
|
|
|
|
'start-compile',
|
|
|
|
startCompile,
|
|
|
|
'detacher',
|
|
|
|
'detached'
|
|
|
|
)
|
|
|
|
const compileHandler = useCallback(
|
|
|
|
event => {
|
2022-08-18 04:14:44 -04:00
|
|
|
startOrTriggerCompile(event.detail)
|
2021-11-30 09:54:14 -05:00
|
|
|
},
|
2022-08-18 04:14:44 -04:00
|
|
|
[startOrTriggerCompile]
|
2021-11-30 09:54:14 -05:00
|
|
|
)
|
|
|
|
useEventListener('pdf:recompile', compileHandler)
|
|
|
|
|
|
|
|
// record doc changes when notified by the editor
|
|
|
|
const setOrTriggerChangedAt = useDetachAction(
|
|
|
|
'set-changed-at',
|
|
|
|
setChangedAt,
|
|
|
|
'detacher',
|
|
|
|
'detached'
|
|
|
|
)
|
|
|
|
const setChangedAtHandler = useCallback(() => {
|
2022-08-18 04:14:44 -04:00
|
|
|
setOrTriggerChangedAt(Date.now())
|
|
|
|
}, [setOrTriggerChangedAt])
|
2021-11-30 09:54:14 -05:00
|
|
|
useEventListener('doc:changed', setChangedAtHandler)
|
2022-06-21 05:58:56 -04:00
|
|
|
useEventListener('doc:saved', setChangedAtHandler) // TODO: store this separately?
|
2021-11-30 09:54:14 -05:00
|
|
|
}
|