ultisuite-client/lib/demo/demo-mail-context.tsx
R3D347HR4Y ad1370ea7e
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
feat: enhance configuration and add new demo layouts
- Introduced turbopack alias for canvas in next.config.mjs.
- Updated package.json scripts for development and branding tasks.
- Added new dependencies for Tiptap extensions.
- Implemented new demo layouts for agenda, contacts, drive, and mail applications.
- Enhanced globals.css for improved theming and splash screen animations.
- Added OAuth callback handling for drive mounts.
- Updated layout components to integrate new demo shells and improve structure.
2026-06-12 19:10:24 +02:00

68 lines
1.4 KiB
TypeScript

"use client"
import {
createContext,
useCallback,
useContext,
useMemo,
type ReactNode,
} from "react"
import { toast } from "sonner"
export const DEMO_MAIL_ROUTE_ROOT = "demo/mail"
export const DEFAULT_MAIL_ROUTE_ROOT = "mail"
type DemoMailContextValue = {
enabled: true
routeRoot: typeof DEMO_MAIL_ROUTE_ROOT
reset: () => void
notify: (message: string) => void
}
const DemoMailContext = createContext<DemoMailContextValue | null>(null)
export function DemoMailProvider({
children,
onReset,
}: {
children: ReactNode
onReset: () => void
}) {
const notify = useCallback((message: string) => {
toast.message(message, {
description: "Mode démo : rien n'est envoyé ni conservé.",
})
}, [])
const reset = useCallback(() => {
onReset()
notify("Démo réinitialisée")
}, [notify, onReset])
const value = useMemo<DemoMailContextValue>(
() => ({
enabled: true,
routeRoot: DEMO_MAIL_ROUTE_ROOT,
reset,
notify,
}),
[reset, notify]
)
return (
<DemoMailContext.Provider value={value}>{children}</DemoMailContext.Provider>
)
}
export function useDemoMail(): DemoMailContextValue | null {
return useContext(DemoMailContext)
}
export function useIsDemoMail(): boolean {
return useDemoMail()?.enabled ?? false
}
export function useMailRouteRoot(): string {
return useDemoMail()?.routeRoot ?? DEFAULT_MAIL_ROUTE_ROOT
}