Skip to content
27 changes: 24 additions & 3 deletions apps/app/src/client/components/PageControls/PageControls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {
import {
isIPageInfoForEntity, isIPageInfoForOperation,
} from '@growi/core';
import { pagePathUtils } from '@growi/core/dist/utils';
import { useRect } from '@growi/ui/dist/utils';
import { useTranslation } from 'next-i18next';
import { DropdownItem } from 'reactstrap';
Expand All @@ -17,7 +18,9 @@ import {
} from '~/client/services/page-operation';
import { toastError } from '~/client/util/toastr';
import OpenDefaultAiAssistantButton from '~/features/openai/client/components/AiAssistant/OpenDefaultAiAssistantButton';
import { useIsGuestUser, useIsReadOnlyUser, useIsSearchPage } from '~/stores-universal/context';
import {
useIsGuestUser, useIsReadOnlyUser, useIsSearchPage, useIsUsersHomepageDeletionEnabled,
} from '~/stores-universal/context';
import {
EditorMode, useEditorMode,
} from '~/stores-universal/ui';
Expand All @@ -27,7 +30,7 @@ import {
} from '~/stores/ui';
import loggerFactory from '~/utils/logger';

import { useSWRxPageInfo, useSWRxTagsInfo } from '../../../stores/page';
import { useSWRxPageInfo, useSWRxTagsInfo, useCurrentPagePath } from '../../../stores/page';
import { useSWRxUsersList } from '../../../stores/user';
import type { AdditionalMenuItemsRendererProps, ForceHideMenuItems } from '../Common/Dropdown/PageItemControl';
import {
Expand Down Expand Up @@ -134,6 +137,12 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
const { data: editorMode } = useEditorMode();
const { data: isDeviceLargerThanMd } = useIsDeviceLargerThanMd();
const { data: isSearchPage } = useIsSearchPage();
const { data: isUsersHomepageDeletionEnabled } = useIsUsersHomepageDeletionEnabled();
const { data: currentPagePath } = useCurrentPagePath();

const isUsersHomepage = pagePathUtils.isUsersHomepage(currentPagePath ?? '');
console.log(isUsersHomepage);


const { mutate: mutatePageInfo } = useSWRxPageInfo(pageId, shareLinkId);

Expand Down Expand Up @@ -280,6 +289,18 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
const _isIPageInfoForOperation = isIPageInfoForOperation(pageInfo);
const isViewMode = editorMode === EditorMode.View;

const isEnableActions = () => {
if (isGuestUser) {
return false;
}

if (isUsersHomepage && !isUsersHomepageDeletionEnabled) {
return false;
}

return true;
};

return (
<div className={`${styles['grw-page-controls']} hstack gap-2`} ref={pageControlsRef}>
{ isViewMode && isDeviceLargerThanMd && !isSearchPage && !isSearchPage && (
Expand Down Expand Up @@ -332,7 +353,7 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
<PageItemControl
pageId={pageId}
pageInfo={pageInfo}
isEnableActions={!isGuestUser}
isEnableActions={isEnableActions()}
isReadOnlyUser={!!isReadOnlyUser}
forceHideMenuItems={forceHideMenuItemsWithAdditions}
additionalMenuItemOnTopRenderer={!isReadOnlyUser ? additionalMenuItemOnTopRenderer : undefined}
Expand Down
8 changes: 6 additions & 2 deletions apps/app/src/pages/[[...path]].page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import {
useIsLocalAccountRegistrationEnabled,
useIsRomUserAllowedToComment,
useIsPdfBulkExportEnabled,
useIsAiEnabled, useLimitLearnablePageCountPerAssistant,
useIsAiEnabled, useLimitLearnablePageCountPerAssistant, useIsUsersHomepageDeletionEnabled,
} from '~/stores-universal/context';
import { useEditingMarkdown } from '~/stores/editor';
import {
Expand Down Expand Up @@ -200,6 +200,7 @@ type Props = CommonProps & {

aiEnabled: boolean,
limitLearnablePageCountPerAssistant: number,
isUsersHomepageDeletionEnabled: boolean,
};

const Page: NextPageWithLayout<Props> = (props: Props) => {
Expand Down Expand Up @@ -258,6 +259,9 @@ const Page: NextPageWithLayout<Props> = (props: Props) => {
useIsAiEnabled(props.aiEnabled);
useLimitLearnablePageCountPerAssistant(props.limitLearnablePageCountPerAssistant);

useIsUsersHomepageDeletionEnabled(props.isUsersHomepageDeletionEnabled);


const { pageWithMeta } = props;

const pageId = pageWithMeta?.data._id;
Expand Down Expand Up @@ -576,7 +580,7 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P

props.aiEnabled = configManager.getConfig('app:aiEnabled');
props.limitLearnablePageCountPerAssistant = configManager.getConfig('openai:limitLearnablePageCountPerAssistant');

props.isUsersHomepageDeletionEnabled = configManager.getConfig('security:user-homepage-deletion:isEnabled');
props.isSearchServiceConfigured = searchService.isConfigured;
props.isSearchServiceReachable = searchService.isReachable;
props.isSearchScopeChildrenAsDefault = configManager.getConfig('customize:isSearchScopeChildrenAsDefault');
Expand Down
6 changes: 6 additions & 0 deletions apps/app/src/stores-universal/context.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,14 @@ export const useLimitLearnablePageCountPerAssistant = (initialData?: number): SW
return useContextSWR('limitLearnablePageCountPerAssistant', initialData);
};


export const useIsUsersHomepageDeletionEnabled = (initialData?: boolean): SWRResponse<boolean, false> => {
return useContextSWR('isUsersHomepageDeletionEnabled', initialData);
};

export const useIsEnableUnifiedMergeView = (initialData?: boolean): SWRResponse<boolean, Error> => {
return useSWRStatic<boolean, Error>('isEnableUnifiedMergeView', initialData, { fallbackData: false });

};

/** **********************************************************
Expand Down
Loading