2
0

alert.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { useSWRStatic } from '@growi/core/dist/swr';
  2. import type { SWRResponse } from 'swr';
  3. import type { EditorMode } from './ui';
  4. /*
  5. * PageStatusAlert
  6. */
  7. type OpenPageStatusAlertOptions = {
  8. hideEditorMode?: EditorMode
  9. onRefleshPage?: () => void
  10. onResolveConflict?: () => void
  11. }
  12. type PageStatusAlertStatus = {
  13. isOpen: boolean
  14. hideEditorMode?: EditorMode,
  15. onRefleshPage?: () => void
  16. onResolveConflict?: () => void
  17. }
  18. type PageStatusAlertUtils = {
  19. open: (openPageStatusAlert: OpenPageStatusAlertOptions) => void,
  20. close: () => void,
  21. }
  22. export const usePageStatusAlert = (): SWRResponse<PageStatusAlertStatus, Error> & PageStatusAlertUtils => {
  23. const initialData: PageStatusAlertStatus = { isOpen: false };
  24. const swrResponse = useSWRStatic<PageStatusAlertStatus, Error>('pageStatusAlert', undefined, { fallbackData: initialData });
  25. return {
  26. ...swrResponse,
  27. open({ ...options }) {
  28. swrResponse.mutate({ isOpen: true, ...options });
  29. },
  30. close() {
  31. swrResponse.mutate({ isOpen: false });
  32. },
  33. };
  34. };