返回 AiToEarn
useAutoPublishOnReady.ts
根目录 / project / aitoearn-web / src / components / PublishDialog / hooks / useAutoPublishOnReady.ts
1 import { useEffect, useRef } from 'react'
2
3 interface UseAutoPublishOnReadyOptions {
4 enabled?: boolean
5 open?: boolean
6 ready: boolean
7 selectedCount: number
8 triggerPublish: () => boolean
9 }
10
11 export function useAutoPublishOnReady({
12 enabled = false,
13 open = true,
14 ready,
15 selectedCount,
16 triggerPublish,
17 }: UseAutoPublishOnReadyOptions) {
18 const hasTriggeredRef = useRef(false)
19
20 useEffect(() => {
21 if (!open) {
22 hasTriggeredRef.current = false
23 return
24 }
25
26 if (!enabled || hasTriggeredRef.current || !ready || selectedCount !== 1)
27 return
28
29 const timer = window.setTimeout(() => {
30 hasTriggeredRef.current = true
31 triggerPublish()
32 }, 0)
33
34 return () => {
35 window.clearTimeout(timer)
36 }
37 }, [enabled, open, ready, selectedCount, triggerPublish])
38 }
39
39 lines TYPESCRIPT