addons-page.ts25 lines · main
| 1 | import { useUrlState } from '@/hooks/ui/useUrlState' |
| 2 | |
| 3 | export const ADDONS_PANEL_KEYS_ARRAY = ['pitr', 'customDomain', 'ipv4'] as const |
| 4 | |
| 5 | export type ADDONS_PANEL_KEYS = undefined | (typeof ADDONS_PANEL_KEYS_ARRAY)[number] |
| 6 | |
| 7 | export function useAddonsPagePanel() { |
| 8 | const [{ panel: _panel }, setParams] = useUrlState({ replace: true }) |
| 9 | |
| 10 | const panel = ADDONS_PANEL_KEYS_ARRAY.find((key) => key === _panel) |
| 11 | |
| 12 | const setPanel = (panel: ADDONS_PANEL_KEYS) => { |
| 13 | setParams({ panel }) |
| 14 | } |
| 15 | |
| 16 | const closePanel = () => { |
| 17 | setParams({ panel: undefined }) |
| 18 | } |
| 19 | |
| 20 | return { |
| 21 | panel, |
| 22 | setPanel, |
| 23 | closePanel, |
| 24 | } |
| 25 | } |