Yuki Takei 7 месяцев назад
Родитель
Сommit
df1a3ed42b

+ 14 - 13
apps/app/src/client/components/PageEditor/PageEditor.tsx

@@ -15,6 +15,7 @@ import { useCodeMirrorEditorIsolated } from '@growi/editor/dist/client/stores/co
 import { useResolvedThemeForEditor } from '@growi/editor/dist/client/stores/use-resolved-theme';
 import { useRect } from '@growi/ui/dist/utils';
 import detectIndent from 'detect-indent';
+import { useAtomValue } from 'jotai';
 import { useTranslation } from 'next-i18next';
 import { throttle, debounce } from 'throttle-debounce';
 
@@ -33,9 +34,9 @@ import {
 } from '~/states/page';
 import { useTemplateBody } from '~/states/page/hooks';
 import {
-  useDefaultIndentSize,
-  useIsEnabledAttachTitleHeader,
-  useIsIndentSizeForced,
+  defaultIndentSizeAtom,
+  isEnabledAttachTitleHeaderAtom,
+  isIndentSizeForcedAtom,
 } from '~/states/server-configurations';
 import { useEditorMode, EditorMode, useEditingMarkdown } from '~/states/ui/editor';
 import {
@@ -97,26 +98,26 @@ export const PageEditorSubstance = (props: Props): JSX.Element => {
   const previewRef = useRef<HTMLDivElement>(null);
   const [previewRect] = useRect(previewRef);
 
-  const [isNotFound] = usePageNotFound();
-  const [pageId] = useCurrentPageId();
-  const [currentPagePath] = useCurrentPagePath();
-  const [currentPathname] = useCurrentPathname();
-  const [currentPage] = useCurrentPageData();
+  const isNotFound = usePageNotFound();
+  const pageId = useCurrentPageId();
+  const currentPagePath = useCurrentPagePath();
+  const currentPathname = useCurrentPathname();
+  const currentPage = useCurrentPageData();
   const { data: selectedGrant } = useSelectedGrant();
   const [editingMarkdown] = useEditingMarkdown();
-  const [isEnabledAttachTitleHeader] = useIsEnabledAttachTitleHeader();
+  const isEnabledAttachTitleHeader = useAtomValue(isEnabledAttachTitleHeaderAtom);
   const [templateBody] = useTemplateBody();
-  const [isEditable] = useIsEditable();
+  const isEditable = useIsEditable();
   const { mutate: mutateWaitingSaveProcessing } = useWaitingSaveProcessing();
   const { editorMode, setEditorMode } = useEditorMode();
   const { data: isUntitledPage } = useIsUntitledPage();
-  const [isIndentSizeForced] = useIsIndentSizeForced();
+  const isIndentSizeForced = useAtomValue(isIndentSizeForcedAtom);
   const { data: currentIndentSize, mutate: mutateCurrentIndentSize } = useCurrentIndentSize();
-  const [defaultIndentSize] = useDefaultIndentSize();
+  const defaultIndentSize = useAtomValue(defaultIndentSizeAtom);
   const { data: acceptedUploadFileType } = useAcceptedUploadFileType();
   const { data: editorSettings } = useEditorSettings();
   const { mutate: mutateIsGrantNormalized } = useSWRxCurrentGrantData(currentPage?._id);
-  const [user] = useCurrentUser();
+  const user = useCurrentUser();
   const { mutate: mutateEditingUsers } = useEditingClients();
   const onConflict = useConflictResolver();
   const { data: reservedNextCaretLine, mutate: mutateReservedNextCaretLine } = useReservedNextCaretLine();

+ 9 - 5
apps/app/src/client/components/PageSideContents/PageSideContents.tsx

@@ -1,15 +1,19 @@
 import React, {
-  Suspense, useCallback, useRef, type JSX,
+  Suspense,
+  useCallback,
+  useRef,
+  type JSX,
 } from 'react';
 
 import type { IPagePopulatedToShowRevision, IPageInfoForOperation } from '@growi/core';
 import { pagePathUtils } from '@growi/core/dist/utils';
+import { useAtomValue } from 'jotai';
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { scroller } from 'react-scroll';
 
 import { useIsGuestUser, useIsReadOnlyUser } from '~/states/context';
-import { useShowPageSideAuthors } from '~/states/server-configurations';
+import { showPageSideAuthorsAtom } from '~/states/server-configurations';
 import { useDescendantsPageListModal, useTagEditModal } from '~/stores/modal';
 import { useSWRxPageInfo, useSWRxTagsInfo } from '~/stores/page';
 import { useIsAbleToShowTagLabel } from '~/stores/ui';
@@ -44,8 +48,8 @@ const Tags = (props: TagsProps): JSX.Element => {
   const { data: tagsInfoData } = useSWRxTagsInfo(pageId, { suspense: true });
 
   const { data: showTagLabel } = useIsAbleToShowTagLabel();
-  const [isGuestUser] = useIsGuestUser();
-  const [isReadOnlyUser] = useIsReadOnlyUser();
+  const isGuestUser = useIsGuestUser();
+  const isReadOnlyUser = useIsReadOnlyUser();
   const { open: openTagEditModal } = useTagEditModal();
 
   const onClickEditTagsButton = useCallback(() => {
@@ -88,7 +92,7 @@ export const PageSideContents = (props: PageSideContentsProps): JSX.Element => {
   const tagsRef = useRef<HTMLDivElement>(null);
 
   const { data: pageInfo } = useSWRxPageInfo(page._id);
-  const [showPageSideAuthors] = useShowPageSideAuthors();
+  const showPageSideAuthors = useAtomValue(showPageSideAuthorsAtom);
 
   const {
     creator, lastUpdateUser, createdAt, updatedAt,

+ 3 - 2
apps/app/src/client/components/PasswordResetRequestForm.tsx

@@ -1,16 +1,17 @@
 import type { FC } from 'react';
 import React, { useState, useCallback } from 'react';
 
+import { useAtomValue } from 'jotai';
 import { useTranslation } from 'next-i18next';
 import Link from 'next/link';
 
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';
-import { useIsMailerSetup } from '~/states/server-configurations';
+import { isMailerSetupAtom } from '~/states/server-configurations';
 
 const PasswordResetRequestForm: FC = () => {
   const { t } = useTranslation();
-  const [isMailerSetup] = useIsMailerSetup();
+  const isMailerSetup = useAtomValue(isMailerSetupAtom);
   const [email, setEmail] = useState('');
 
   const changeEmail = useCallback((inputValue) => {

+ 4 - 4
apps/app/src/client/components/ReactMarkdownComponents/Header.tsx

@@ -63,10 +63,10 @@ export const Header = (props: HeaderProps): JSX.Element => {
     node, id, children,
   } = props;
 
-  const [isGuestUser] = useIsGuestUser();
-  const [isReadOnlyUser] = useIsReadOnlyUser();
-  const [isSharedUser] = useIsSharedUser();
-  const [shareLinkId] = useShareLinkId();
+  const isGuestUser = useIsGuestUser();
+  const isReadOnlyUser = useIsReadOnlyUser();
+  const isSharedUser = useIsSharedUser();
+  const shareLinkId = useShareLinkId();
   const { data: currentPageYjsData, isLoading: isLoadingCurrentPageYjsData } = useCurrentPageYjsData();
 
   const router = useRouter();