use-link-edit-modal.ts 967 B

123456789101112131415161718192021222324252627282930
  1. import { useSWRStatic } from '@growi/core/dist/swr';
  2. import type { SWRResponse } from 'swr';
  3. import type { Linker } from '../../models';
  4. type LinkEditModalStatus = {
  5. isOpened: boolean,
  6. defaultMarkdownLink?: Linker,
  7. onSave?: (linkText: string) => void
  8. }
  9. type LinkEditModalUtils = {
  10. open(defaultMarkdownLink: Linker, onSave: (linkText: string) => void): void,
  11. close(): void,
  12. }
  13. export const useLinkEditModal = (): SWRResponse<LinkEditModalStatus, Error> & LinkEditModalUtils => {
  14. const initialStatus: LinkEditModalStatus = { isOpened: false };
  15. const swrResponse = useSWRStatic<LinkEditModalStatus, Error>('linkEditModal', undefined, { fallbackData: initialStatus });
  16. return Object.assign(swrResponse, {
  17. open: (defaultMarkdownLink: Linker, onSave: (linkText: string) => void) => {
  18. swrResponse.mutate({ isOpened: true, defaultMarkdownLink, onSave });
  19. },
  20. close: () => {
  21. swrResponse.mutate({ isOpened: false });
  22. },
  23. });
  24. };