|
@@ -19,7 +19,11 @@ import { CrowiRequest } from '~/interfaces/crowi-request';
|
|
|
import { IPageWithMeta } from '~/interfaces/page';
|
|
import { IPageWithMeta } from '~/interfaces/page';
|
|
|
import { PageModel } from '~/server/models/page';
|
|
import { PageModel } from '~/server/models/page';
|
|
|
import { serializeUserSecurely } from '~/server/models/serializers/user-serializer';
|
|
import { serializeUserSecurely } from '~/server/models/serializers/user-serializer';
|
|
|
|
|
+import UserUISettings, { UserUISettingsDocument } from '~/server/models/user-ui-settings';
|
|
|
import { useSWRxCurrentPage, useSWRxPageInfo } from '~/stores/page';
|
|
import { useSWRxCurrentPage, useSWRxPageInfo } from '~/stores/page';
|
|
|
|
|
+import {
|
|
|
|
|
+ usePreferDrawerModeByUser, usePreferDrawerModeOnEditByUser, useSidebarCollapsed, useCurrentSidebarContents, useCurrentProductNavWidth,
|
|
|
|
|
+} from '~/stores/ui';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
import loggerFactory from '~/utils/logger';
|
|
|
|
|
|
|
|
// import { isUserPage, isTrashPage, isSharedPage } from '~/utils/path-utils';
|
|
// import { isUserPage, isTrashPage, isSharedPage } from '~/utils/path-utils';
|
|
@@ -81,6 +85,12 @@ type Props = CommonProps & {
|
|
|
// isEnabledLinebreaksInComments: boolean,
|
|
// isEnabledLinebreaksInComments: boolean,
|
|
|
// adminPreferredIndentSize: number,
|
|
// adminPreferredIndentSize: number,
|
|
|
// isIndentSizeForced: boolean,
|
|
// isIndentSizeForced: boolean,
|
|
|
|
|
+
|
|
|
|
|
+ // UI
|
|
|
|
|
+ userUISettings: UserUISettingsDocument | null
|
|
|
|
|
+
|
|
|
|
|
+ isSidebarDrawerMode: boolean,
|
|
|
|
|
+ isSidebarClosedAtDockMode: boolean,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const GrowiPage: NextPage<Props> = (props: Props) => {
|
|
const GrowiPage: NextPage<Props> = (props: Props) => {
|
|
@@ -96,6 +106,13 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
|
|
|
useConfidential(props.confidential);
|
|
useConfidential(props.confidential);
|
|
|
useCsrfToken(props.csrfToken);
|
|
useCsrfToken(props.csrfToken);
|
|
|
|
|
|
|
|
|
|
+ // UserUISettings
|
|
|
|
|
+ usePreferDrawerModeByUser(props.userUISettings?.preferDrawerModeByUser ?? props.isSidebarDrawerMode);
|
|
|
|
|
+ usePreferDrawerModeOnEditByUser(props.userUISettings?.preferDrawerModeOnEditByUser);
|
|
|
|
|
+ useSidebarCollapsed(props.userUISettings?.isSidebarCollapsed ?? props.isSidebarClosedAtDockMode);
|
|
|
|
|
+ useCurrentSidebarContents(props.userUISettings?.currentSidebarContents);
|
|
|
|
|
+ useCurrentProductNavWidth(props.userUISettings?.currentProductNavWidth);
|
|
|
|
|
+
|
|
|
// page
|
|
// page
|
|
|
useCurrentPagePath(props.currentPathname);
|
|
useCurrentPagePath(props.currentPathname);
|
|
|
// useOwnerOfCurrentPage(props.pageUser != null ? JSON.parse(props.pageUser) : null);
|
|
// useOwnerOfCurrentPage(props.pageUser != null ? JSON.parse(props.pageUser) : null);
|
|
@@ -271,6 +288,7 @@ export const getServerSideProps: GetServerSideProps = async(context: GetServerSi
|
|
|
const { user } = req;
|
|
const { user } = req;
|
|
|
|
|
|
|
|
const result = await getServerSideCommonProps(context);
|
|
const result = await getServerSideCommonProps(context);
|
|
|
|
|
+ const userUISettings = user == null ? null : await UserUISettings.findOne({ user: user._id });
|
|
|
|
|
|
|
|
// check for presence
|
|
// check for presence
|
|
|
// see: https://github.com/vercel/next.js/issues/19271#issuecomment-730006862
|
|
// see: https://github.com/vercel/next.js/issues/19271#issuecomment-730006862
|
|
@@ -310,6 +328,10 @@ export const getServerSideProps: GetServerSideProps = async(context: GetServerSi
|
|
|
// props.adminPreferredIndentSize = configManager.getConfig('markdown', 'markdown:adminPreferredIndentSize');
|
|
// props.adminPreferredIndentSize = configManager.getConfig('markdown', 'markdown:adminPreferredIndentSize');
|
|
|
// props.isIndentSizeForced = configManager.getConfig('markdown', 'markdown:isIndentSizeForced');
|
|
// props.isIndentSizeForced = configManager.getConfig('markdown', 'markdown:isIndentSizeForced');
|
|
|
|
|
|
|
|
|
|
+ // ui
|
|
|
|
|
+ props.userUISettings = userUISettings;
|
|
|
|
|
+ props.isSidebarDrawerMode = configManager.getConfig('crowi', 'customize:isSidebarDrawerMode');
|
|
|
|
|
+ props.isSidebarClosedAtDockMode = configManager.getConfig('crowi', 'customize:isSidebarClosedAtDockMode');
|
|
|
return {
|
|
return {
|
|
|
props,
|
|
props,
|
|
|
};
|
|
};
|