hydrate.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { useHydrateAtoms } from 'jotai/utils';
  2. import type { RendererConfig } from '~/interfaces/services/renderer';
  3. import {
  4. aiEnabledAtom,
  5. limitLearnablePageCountPerAssistantAtom,
  6. isUsersHomepageDeletionEnabledAtom,
  7. defaultIndentSizeAtom,
  8. elasticsearchMaxBodyLengthToIndexAtom,
  9. isRomUserAllowedToCommentAtom,
  10. drawioUriAtom,
  11. isAllReplyShownAtom,
  12. showPageSideAuthorsAtom,
  13. isContainerFluidAtom,
  14. isEnabledStaleNotificationAtom,
  15. disableLinkSharingAtom,
  16. isIndentSizeForcedAtom,
  17. isEnabledAttachTitleHeaderAtom,
  18. isSlackConfiguredAtom,
  19. isAclEnabledAtom,
  20. isUploadAllFileAllowedAtom,
  21. isUploadEnabledAtom,
  22. isBulkExportPagesEnabledAtom,
  23. isPdfBulkExportEnabledAtom,
  24. isLocalAccountRegistrationEnabledAtom,
  25. rendererConfigAtom,
  26. } from '~/states/server-configurations';
  27. import type { ServerConfigurationProps } from './types';
  28. /**
  29. * Hook for hydrating server configuration atoms with server-side data
  30. * This should be called early in the app component to ensure atoms are properly initialized before rendering
  31. */
  32. export const useHydrateGeneralPageConfigurationAtoms = (
  33. serverConfig: ServerConfigurationProps['serverConfig'] | undefined,
  34. rendererConfigs: RendererConfig | undefined,
  35. ): void => {
  36. // Hydrate server configuration atoms with server-side data
  37. useHydrateAtoms(serverConfig == null || rendererConfigs == null ? [] : [
  38. [aiEnabledAtom, serverConfig.aiEnabled],
  39. [limitLearnablePageCountPerAssistantAtom, serverConfig.limitLearnablePageCountPerAssistant],
  40. [isUsersHomepageDeletionEnabledAtom, serverConfig.isUsersHomepageDeletionEnabled],
  41. [defaultIndentSizeAtom, serverConfig.adminPreferredIndentSize],
  42. [elasticsearchMaxBodyLengthToIndexAtom, serverConfig.elasticsearchMaxBodyLengthToIndex],
  43. [isRomUserAllowedToCommentAtom, serverConfig.isRomUserAllowedToComment],
  44. [drawioUriAtom, serverConfig.drawioUri],
  45. [isAllReplyShownAtom, serverConfig.isAllReplyShown],
  46. [showPageSideAuthorsAtom, serverConfig.showPageSideAuthors],
  47. [isContainerFluidAtom, serverConfig.isContainerFluid],
  48. [isEnabledStaleNotificationAtom, serverConfig.isEnabledStaleNotification],
  49. [disableLinkSharingAtom, serverConfig.disableLinkSharing],
  50. [isIndentSizeForcedAtom, serverConfig.isIndentSizeForced],
  51. [isEnabledAttachTitleHeaderAtom, serverConfig.isEnabledAttachTitleHeader],
  52. [isSlackConfiguredAtom, serverConfig.isSlackConfigured],
  53. [isAclEnabledAtom, serverConfig.isAclEnabled],
  54. [isUploadAllFileAllowedAtom, serverConfig.isUploadAllFileAllowed],
  55. [isUploadEnabledAtom, serverConfig.isUploadEnabled],
  56. [isBulkExportPagesEnabledAtom, serverConfig.isBulkExportPagesEnabled],
  57. [isPdfBulkExportEnabledAtom, serverConfig.isPdfBulkExportEnabled],
  58. [isLocalAccountRegistrationEnabledAtom, serverConfig.isLocalAccountRegistrationEnabled],
  59. [rendererConfigAtom, rendererConfigs],
  60. ]);
  61. };