mirror of
https://github.com/langgenius/dify.git
synced 2026-05-13 00:33:37 +08:00
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
'use client'
|
|
|
|
import { useLocalStorageState } from 'ahooks'
|
|
import { useCallback, useEffect } from 'react'
|
|
|
|
export const LEARN_DIFY_HIDDEN_STORAGE_KEY = 'explore-learn-dify-hidden'
|
|
export const LEARN_DIFY_VISIBILITY_CHANGE_EVENT = 'explore-learn-dify-visibility-change'
|
|
|
|
type LearnDifyVisibilityChangeEvent = CustomEvent<{ hidden: boolean }>
|
|
|
|
export const dispatchLearnDifyVisibilityChange = (hidden: boolean) => {
|
|
window.dispatchEvent(new CustomEvent(LEARN_DIFY_VISIBILITY_CHANGE_EVENT, {
|
|
detail: { hidden },
|
|
}))
|
|
}
|
|
|
|
export const useLearnDifyHiddenState = () => {
|
|
const [rawHidden, setRawHidden] = useLocalStorageState<boolean>(LEARN_DIFY_HIDDEN_STORAGE_KEY, {
|
|
defaultValue: false,
|
|
})
|
|
|
|
useEffect(() => {
|
|
const handleVisibilityChange = (event: Event) => {
|
|
setRawHidden((event as LearnDifyVisibilityChangeEvent).detail.hidden)
|
|
}
|
|
|
|
window.addEventListener(LEARN_DIFY_VISIBILITY_CHANGE_EVENT, handleVisibilityChange)
|
|
return () => {
|
|
window.removeEventListener(LEARN_DIFY_VISIBILITY_CHANGE_EVENT, handleVisibilityChange)
|
|
}
|
|
}, [setRawHidden])
|
|
|
|
const setHidden = useCallback((nextHidden: boolean) => {
|
|
setRawHidden(nextHidden)
|
|
dispatchLearnDifyVisibilityChange(nextHidden)
|
|
}, [setRawHidden])
|
|
|
|
return [rawHidden ?? false, setHidden] as const
|
|
}
|