| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { useCallback, useState } from 'react';
- import type { Nullable, IPagePopulatedToShowRevision, IUserHasId } from '@growi/core';
- import { useRouter } from 'next/router';
- import { createPage, exist } from '~/client/services/page-operation';
- import { toastError } from '~/client/util/toastr';
- export const useOnNewButtonClicked = (
- isLoading: boolean,
- currentPage?: IPagePopulatedToShowRevision | null,
- ): {
- onClickHandler: () => Promise<void>,
- isPageCreating: boolean
- } => {
- const router = useRouter();
- const [isPageCreating, setIsPageCreating] = useState(false);
- const onClickHandler = useCallback(async() => {
- if (isLoading) return;
- try {
- setIsPageCreating(true);
- const parentPath = currentPage == null
- ? '/'
- : currentPage.path;
- const params = {
- isSlackEnabled: false,
- slackChannels: '',
- grant: 4,
- // grant: currentPage?.grant || 1,
- // grantUserGroupId: currentPage?.grantedGroup?._id,
- shouldGeneratePath: true,
- };
- const response = await createPage(parentPath, '', params);
- router.push(`${response.page.id}#edit`);
- }
- catch (err) {
- toastError(err);
- }
- finally {
- setIsPageCreating(false);
- }
- }, [currentPage, isLoading, router]);
- return { onClickHandler, isPageCreating };
- };
- export const useOnTodaysButtonClicked = (
- todaysPath: string,
- currentUser?: Nullable<IUserHasId> | undefined,
- ): {
- onClickHandler: () => Promise<void>,
- isPageCreating: boolean
- } => {
- const router = useRouter();
- const [isPageCreating, setIsPageCreating] = useState(false);
- const onClickHandler = useCallback(async() => {
- if (currentUser == null) {
- return;
- }
- try {
- setIsPageCreating(true);
- // TODO: get grant, grantUserGroupId data from parent page
- // https://redmine.weseek.co.jp/issues/133892
- const params = {
- isSlackEnabled: false,
- slackChannels: '',
- grant: 4,
- };
- const res = await exist(JSON.stringify([todaysPath]));
- if (!res.pages[todaysPath]) {
- await createPage(todaysPath, '', params);
- }
- router.push(`${todaysPath}#edit`);
- }
- catch (err) {
- toastError(err);
- }
- finally {
- setIsPageCreating(false);
- }
- }, [currentUser, router, todaysPath]);
- return { onClickHandler, isPageCreating };
- };
|