diff options
Diffstat (limited to 'src/components/dialogs/nuxs/index.tsx')
-rw-r--r-- | src/components/dialogs/nuxs/index.tsx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/components/dialogs/nuxs/index.tsx b/src/components/dialogs/nuxs/index.tsx new file mode 100644 index 000000000..401dd3e66 --- /dev/null +++ b/src/components/dialogs/nuxs/index.tsx @@ -0,0 +1,56 @@ +import React from 'react' + +import {useSession} from '#/state/session' +import * as Dialog from '#/components/Dialog' +import {TenMillion} from '#/components/dialogs/nuxs/TenMillion' + +type Context = { + controls: { + tenMillion: Dialog.DialogOuterProps['control'] + } +} + +const Context = React.createContext<Context>({ + // @ts-ignore + controls: {}, +}) + +export function useContext() { + return React.useContext(Context) +} + +let SHOWN = false + +export function NuxDialogs() { + const {hasSession} = useSession() + const tenMillion = Dialog.useDialogControl() + + const ctx = React.useMemo(() => { + return { + controls: { + tenMillion, + }, + } + }, [tenMillion]) + + React.useEffect(() => { + if (!hasSession) return + + const t = setTimeout(() => { + if (!SHOWN) { + SHOWN = true + ctx.controls.tenMillion.open() + } + }, 2e3) + + return () => { + clearTimeout(t) + } + }, [ctx, hasSession]) + + return ( + <Context.Provider value={ctx}> + <TenMillion /> + </Context.Provider> + ) +} |