context.tsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import type EventEmitter from 'events';
  2. import { AcceptedUploadFileType } from '@growi/core';
  3. import { useSWRStatic } from '@growi/core/dist/swr';
  4. import type { SWRResponse } from 'swr';
  5. import useSWRImmutable from 'swr/immutable';
  6. import type { SupportedActionType } from '~/interfaces/activity';
  7. import { useIsUploadEnabled, useIsUploadAllFileAllowed } from '~/states/server-configurations';
  8. import { useContextSWR } from './use-context-swr';
  9. declare global {
  10. // eslint-disable-next-line vars-on-top, no-var
  11. var globalEmitter: EventEmitter;
  12. }
  13. type Nullable<T> = T | null;
  14. export const useIsSharedUser = (initialData?: boolean): SWRResponse<boolean, Error> => {
  15. return useContextSWR<boolean, Error>('isSharedUser', initialData);
  16. };
  17. export const useShareLinkId = (initialData?: string): SWRResponse<string, Error> => {
  18. return useContextSWR('shareLinkId', initialData);
  19. };
  20. export const useRegistrationWhitelist = (initialData?: Nullable<string[]>): SWRResponse<Nullable<string[]>, Error> => {
  21. return useContextSWR<Nullable<string[]>, Error>('registrationWhitelist', initialData);
  22. };
  23. export const useIsSearchPage = (initialData?: Nullable<boolean>) : SWRResponse<Nullable<boolean>, Error> => {
  24. return useContextSWR<Nullable<boolean>, Error>('isSearchPage', initialData);
  25. };
  26. export const useIsMailerSetup = (initialData?: boolean): SWRResponse<boolean, Error> => {
  27. return useContextSWR('isMailerSetup', initialData);
  28. };
  29. export const useAuditLogEnabled = (initialData?: boolean): SWRResponse<boolean, Error> => {
  30. return useContextSWR<boolean, Error>('auditLogEnabled', initialData, { fallbackData: false });
  31. };
  32. export const useActivityExpirationSeconds = (initialData?: number) : SWRResponse<number, Error> => {
  33. return useContextSWR<number, Error>('activityExpirationSeconds', initialData);
  34. };
  35. export const useAuditLogAvailableActions = (initialData?: Array<SupportedActionType>) : SWRResponse<Array<SupportedActionType>, Error> => {
  36. return useContextSWR<Array<SupportedActionType>, Error>('auditLogAvailableActions', initialData);
  37. };
  38. export const useIsBlinkedHeaderAtBoot = (initialData?: boolean): SWRResponse<boolean, Error> => {
  39. return useContextSWR('isBlinkedAtBoot', initialData, { fallbackData: false });
  40. };
  41. export const useShowPageLimitationL = (initialData?: number): SWRResponse<number, Error> => {
  42. return useContextSWR('showPageLimitationL', initialData);
  43. };
  44. export const useShowPageLimitationXL = (initialData?: number): SWRResponse<number, Error> => {
  45. return useContextSWR('showPageLimitationXL', initialData);
  46. };
  47. export const useCustomizeTitle = (initialData?: string): SWRResponse<string, Error> => {
  48. return useContextSWR('CustomizeTitle', initialData);
  49. };
  50. export const useIsCustomizedLogoUploaded = (initialData?: boolean): SWRResponse<boolean, Error> => {
  51. return useSWRStatic('isCustomizedLogoUploaded', initialData);
  52. };
  53. export const useGrowiAppIdForGrowiCloud = (initialData?: number): SWRResponse<number, Error> => {
  54. return useContextSWR('growiAppIdForGrowiCloud', initialData);
  55. };
  56. export const useIsEnableUnifiedMergeView = (initialData?: boolean): SWRResponse<boolean, Error> => {
  57. return useSWRStatic<boolean, Error>('isEnableUnifiedMergeView', initialData, { fallbackData: false });
  58. };
  59. /** **********************************************************
  60. * Computed contexts
  61. *********************************************************** */
  62. export const useAcceptedUploadFileType = (): SWRResponse<AcceptedUploadFileType, Error> => {
  63. const [isUploadEnabled] = useIsUploadEnabled();
  64. const [isUploadAllFileAllowed] = useIsUploadAllFileAllowed();
  65. return useSWRImmutable(
  66. ['acceptedUploadFileType', isUploadEnabled, isUploadAllFileAllowed],
  67. ([, isUploadEnabled, isUploadAllFileAllowed]) => {
  68. if (!isUploadEnabled) {
  69. return AcceptedUploadFileType.NONE;
  70. }
  71. if (isUploadAllFileAllowed) {
  72. return AcceptedUploadFileType.ALL;
  73. }
  74. return AcceptedUploadFileType.IMAGE;
  75. },
  76. );
  77. };