Skip to content

Commit 249506e

Browse files
authored
Merge of #9915
2 parents c766212 + e46034f commit 249506e

File tree

3 files changed

+38
-5
lines changed

3 files changed

+38
-5
lines changed

apps/app/src/client/components/PageControls/PageControls.tsx

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
import {
99
isIPageInfoForEntity, isIPageInfoForOperation,
1010
} from '@growi/core';
11+
import { pagePathUtils } from '@growi/core/dist/utils';
1112
import { useRect } from '@growi/ui/dist/utils';
1213
import { useTranslation } from 'next-i18next';
1314
import { DropdownItem } from 'reactstrap';
@@ -17,7 +18,9 @@ import {
1718
} from '~/client/services/page-operation';
1819
import { toastError } from '~/client/util/toastr';
1920
import OpenDefaultAiAssistantButton from '~/features/openai/client/components/AiAssistant/OpenDefaultAiAssistantButton';
20-
import { useIsGuestUser, useIsReadOnlyUser, useIsSearchPage } from '~/stores-universal/context';
21+
import {
22+
useIsGuestUser, useIsReadOnlyUser, useIsSearchPage, useIsUsersHomepageDeletionEnabled,
23+
} from '~/stores-universal/context';
2124
import {
2225
EditorMode, useEditorMode,
2326
} from '~/stores-universal/ui';
@@ -27,7 +30,7 @@ import {
2730
} from '~/stores/ui';
2831
import loggerFactory from '~/utils/logger';
2932

30-
import { useSWRxPageInfo, useSWRxTagsInfo } from '../../../stores/page';
33+
import { useSWRxPageInfo, useSWRxTagsInfo, useCurrentPagePath } from '../../../stores/page';
3134
import { useSWRxUsersList } from '../../../stores/user';
3235
import type { AdditionalMenuItemsRendererProps, ForceHideMenuItems } from '../Common/Dropdown/PageItemControl';
3336
import {
@@ -134,6 +137,10 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
134137
const { data: editorMode } = useEditorMode();
135138
const { data: isDeviceLargerThanMd } = useIsDeviceLargerThanMd();
136139
const { data: isSearchPage } = useIsSearchPage();
140+
const { data: isUsersHomepageDeletionEnabled } = useIsUsersHomepageDeletionEnabled();
141+
const { data: currentPagePath } = useCurrentPagePath();
142+
143+
const isUsersHomepage = currentPagePath == null ? false : pagePathUtils.isUsersHomepage(currentPagePath);
137144

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

@@ -249,6 +256,22 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
249256
}
250257
}, [expandContentWidth, isGuestUser, isReadOnlyUser, onClickSwitchContentWidth, pageId, pageInfo]);
251258

259+
const isEnableActions = useMemo(() => {
260+
if (isGuestUser) {
261+
return false;
262+
}
263+
264+
if (currentPagePath == null) {
265+
return false;
266+
}
267+
268+
if (isUsersHomepage && !isUsersHomepageDeletionEnabled) {
269+
return false;
270+
}
271+
272+
return true;
273+
}, [isGuestUser, isUsersHomepage, isUsersHomepageDeletionEnabled]);
274+
252275
const additionalMenuItemOnTopRenderer = useMemo(() => {
253276
if (!isIPageInfoForEntity(pageInfo)) {
254277
return undefined;
@@ -332,7 +355,7 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
332355
<PageItemControl
333356
pageId={pageId}
334357
pageInfo={pageInfo}
335-
isEnableActions={!isGuestUser}
358+
isEnableActions={isEnableActions}
336359
isReadOnlyUser={!!isReadOnlyUser}
337360
forceHideMenuItems={forceHideMenuItemsWithAdditions}
338361
additionalMenuItemOnTopRenderer={!isReadOnlyUser ? additionalMenuItemOnTopRenderer : undefined}

apps/app/src/pages/[[...path]].page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import {
4747
useIsLocalAccountRegistrationEnabled,
4848
useIsRomUserAllowedToComment,
4949
useIsPdfBulkExportEnabled,
50-
useIsAiEnabled, useLimitLearnablePageCountPerAssistant,
50+
useIsAiEnabled, useLimitLearnablePageCountPerAssistant, useIsUsersHomepageDeletionEnabled,
5151
} from '~/stores-universal/context';
5252
import { useEditingMarkdown } from '~/stores/editor';
5353
import {
@@ -200,6 +200,7 @@ type Props = CommonProps & {
200200

201201
aiEnabled: boolean,
202202
limitLearnablePageCountPerAssistant: number,
203+
isUsersHomepageDeletionEnabled: boolean,
203204
};
204205

205206
const Page: NextPageWithLayout<Props> = (props: Props) => {
@@ -258,6 +259,9 @@ const Page: NextPageWithLayout<Props> = (props: Props) => {
258259
useIsAiEnabled(props.aiEnabled);
259260
useLimitLearnablePageCountPerAssistant(props.limitLearnablePageCountPerAssistant);
260261

262+
useIsUsersHomepageDeletionEnabled(props.isUsersHomepageDeletionEnabled);
263+
264+
261265
const { pageWithMeta } = props;
262266

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

577581
props.aiEnabled = configManager.getConfig('app:aiEnabled');
578582
props.limitLearnablePageCountPerAssistant = configManager.getConfig('openai:limitLearnablePageCountPerAssistant');
579-
583+
props.isUsersHomepageDeletionEnabled = configManager.getConfig('security:user-homepage-deletion:isEnabled');
580584
props.isSearchServiceConfigured = searchService.isConfigured;
581585
props.isSearchServiceReachable = searchService.isReachable;
582586
props.isSearchScopeChildrenAsDefault = configManager.getConfig('customize:isSearchScopeChildrenAsDefault');

apps/app/src/stores-universal/context.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,14 @@ export const useLimitLearnablePageCountPerAssistant = (initialData?: number): SW
224224
return useContextSWR('limitLearnablePageCountPerAssistant', initialData);
225225
};
226226

227+
228+
export const useIsUsersHomepageDeletionEnabled = (initialData?: boolean): SWRResponse<boolean, false> => {
229+
return useContextSWR('isUsersHomepageDeletionEnabled', initialData);
230+
};
231+
227232
export const useIsEnableUnifiedMergeView = (initialData?: boolean): SWRResponse<boolean, Error> => {
228233
return useSWRStatic<boolean, Error>('isEnableUnifiedMergeView', initialData, { fallbackData: false });
234+
229235
};
230236

231237
/** **********************************************************

0 commit comments

Comments
 (0)