| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { useHydrateAtoms } from 'jotai/utils';
- import {
- isSearchScopeChildrenAsDefaultAtom,
- isSearchServiceConfiguredAtom,
- isSearchServiceReachableAtom,
- } from '~/states/server-configurations';
- import { useHydrateSidebarAtoms } from '~/states/ui/sidebar/hydrate';
- import { createAtomTuple } from '~/utils/jotai-utils';
- import type {
- SearchConfigurationProps,
- SidebarConfigurationProps,
- UserUISettingsProps,
- } from './types';
- /**
- * Hook for hydrating server configuration atoms with server-side data
- * This should be called early in the app component to ensure atoms are properly initialized before rendering
- */
- export const useHydrateBasicLayoutConfigurationAtoms = (
- searchConfig: SearchConfigurationProps['searchConfig'] | undefined,
- sidebarConfig: SidebarConfigurationProps['sidebarConfig'] | undefined,
- userUISettings: UserUISettingsProps['userUISettings'] | undefined,
- ): void => {
- const tuples =
- searchConfig == null
- ? []
- : [
- createAtomTuple(
- isSearchServiceConfiguredAtom,
- searchConfig.isSearchServiceConfigured,
- ),
- createAtomTuple(
- isSearchServiceReachableAtom,
- searchConfig.isSearchServiceReachable,
- ),
- createAtomTuple(
- isSearchScopeChildrenAsDefaultAtom,
- searchConfig.isSearchScopeChildrenAsDefault,
- ),
- ];
- useHydrateAtoms(tuples);
- useHydrateSidebarAtoms(sidebarConfig, userUISettings);
- };
|