use-create-new-page.ts 891 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { useCallback } from 'react';
  2. import { Origin } from '@growi/core';
  3. import { useCreatePageAndTransit } from '~/client/services/create-page';
  4. import { useCurrentPagePath } from '~/stores/page';
  5. type UseCreateNewPage = () => {
  6. isCreating: boolean,
  7. createNewPage: () => Promise<void>,
  8. }
  9. export const useCreateNewPage: UseCreateNewPage = () => {
  10. const { data: currentPagePath, isLoading: isLoadingPagePath } = useCurrentPagePath();
  11. const { isCreating, createAndTransit } = useCreatePageAndTransit();
  12. const createNewPage = useCallback(async() => {
  13. if (isLoadingPagePath) return;
  14. return createAndTransit(
  15. {
  16. parentPath: currentPagePath,
  17. optionalParentPath: '/',
  18. wip: true,
  19. origin: Origin.View,
  20. },
  21. );
  22. }, [createAndTransit, currentPagePath, isLoadingPagePath]);
  23. return {
  24. isCreating,
  25. createNewPage,
  26. };
  27. };