mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-12 02:43:50 +00:00
33 lines
1004 B
TypeScript
33 lines
1004 B
TypeScript
import { useCallback, useMemo } from 'react';
|
|
import { useSearchParams } from 'react-router-dom';
|
|
|
|
import { SettingsOptionId } from './useAppSettingsMenu';
|
|
|
|
const settingsKey = 'settings';
|
|
|
|
export default function useAppSettingsNavigation() {
|
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
|
|
const selectedPanel = useMemo(
|
|
() => (searchParams.get(settingsKey) as SettingsOptionId | null) ?? 'project',
|
|
[searchParams],
|
|
);
|
|
const isOpen = useMemo(() => Boolean(searchParams.get(settingsKey)), [searchParams]);
|
|
const [panel, location] = selectedPanel.split('__');
|
|
|
|
const close = useCallback(() => {
|
|
searchParams.delete(settingsKey);
|
|
setSearchParams(searchParams);
|
|
}, [searchParams, setSearchParams]);
|
|
|
|
const setLocation = useCallback(
|
|
(panelId: SettingsOptionId) => {
|
|
searchParams.set(settingsKey, panelId);
|
|
setSearchParams(searchParams);
|
|
},
|
|
[searchParams, setSearchParams],
|
|
);
|
|
|
|
return { isOpen, panel, location, setLocation, close };
|
|
}
|