Yuki Takei 8 mesi fa
parent
commit
ed01678d93
23 ha cambiato i file con 57 aggiunte e 52 eliminazioni
  1. 2 2
      apps/app/src/client/components/Admin/Users/RevokeAdminButton.tsx
  2. 2 2
      apps/app/src/client/components/Admin/Users/RevokeAdminMenuItem.tsx
  3. 2 2
      apps/app/src/client/components/Admin/Users/StatusSuspendMenuItem.tsx
  4. 2 2
      apps/app/src/client/components/Bookmarks/BookmarkFolderMenu.tsx
  5. 2 2
      apps/app/src/client/components/Comments.tsx
  6. 2 2
      apps/app/src/client/components/InvitedForm.tsx
  7. 2 2
      apps/app/src/client/components/Me/ProfileImageSettings.tsx
  8. 5 3
      apps/app/src/client/components/PageComment/CommentEditor.tsx
  9. 3 2
      apps/app/src/client/components/PageCreateModal.tsx
  10. 2 2
      apps/app/src/client/components/PageEditor/ConflictDiffModal.tsx
  11. 2 2
      apps/app/src/client/components/PageEditor/EditorNavbarBottom/GrantSelector.tsx
  12. 5 4
      apps/app/src/client/components/PageEditor/PageEditor.tsx
  13. 2 2
      apps/app/src/client/components/SearchPage/SearchResultContent.tsx
  14. 2 2
      apps/app/src/client/components/Sidebar/Bookmarks/BookmarkContents.tsx
  15. 2 2
      apps/app/src/client/components/Sidebar/PageCreateButton/hooks/use-create-todays-memo.tsx
  16. 2 2
      apps/app/src/client/components/Sidebar/SidebarNav/PersonalDropdown.tsx
  17. 2 2
      apps/app/src/client/components/UsersHomepageFooter.tsx
  18. 2 2
      apps/app/src/components/PageView/PageAlerts/FixPageGrantAlert.tsx
  19. 2 2
      apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AccessScopeDropdown.tsx
  20. 3 2
      apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AiAssistantManagementHome.tsx
  21. 2 2
      apps/app/src/features/openai/client/components/AiAssistant/Sidebar/AiAssistantList.tsx
  22. 2 3
      apps/app/src/stores/bookmark.ts
  23. 5 4
      apps/app/src/stores/ui.tsx

+ 2 - 2
apps/app/src/client/components/Admin/Users/RevokeAdminButton.tsx

@@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next';
 
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';
 import { toastSuccess, toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { withUnstatedContainers } from '../../UnstatedUtils';
 
@@ -17,7 +17,7 @@ type RevokeAdminButtonProps = {
 const RevokeAdminButton = (props: RevokeAdminButtonProps): JSX.Element => {
 
   const { t } = useTranslation('admin');
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { adminUsersContainer, user } = props;
 
   const onClickRevokeAdminBtnHandler = useCallback(async() => {

+ 2 - 2
apps/app/src/client/components/Admin/Users/RevokeAdminMenuItem.tsx

@@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next';
 
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';
 import { toastSuccess, toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { withUnstatedContainers } from '../../UnstatedUtils';
 
@@ -33,7 +33,7 @@ const RevokeAdminMenuItem = (props: Props): JSX.Element => {
 
   const { adminUsersContainer, user } = props;
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const clickRevokeAdminBtnHandler = useCallback(async() => {
     try {

+ 2 - 2
apps/app/src/client/components/Admin/Users/StatusSuspendMenuItem.tsx

@@ -6,7 +6,7 @@ import { useTranslation } from 'next-i18next';
 import { withUnstatedContainers } from '~/client/components/UnstatedUtils';
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';
 import { toastSuccess, toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 
 const SuspendAlert = React.memo((): JSX.Element => {
@@ -32,7 +32,7 @@ const StatusSuspendMenuItem = (props: Props): JSX.Element => {
 
   const { adminUsersContainer, user } = props;
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const clickDeactiveBtnHandler = useCallback(async() => {
     try {

+ 2 - 2
apps/app/src/client/components/Bookmarks/BookmarkFolderMenu.tsx

@@ -7,7 +7,7 @@ import { DropdownItem, DropdownMenu, UncontrolledDropdown } from 'reactstrap';
 
 import { addBookmarkToFolder, toggleBookmark } from '~/client/util/bookmark-utils';
 import { toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 import { useSWRMUTxCurrentUserBookmarks } from '~/stores/bookmark';
 import { useSWRxBookmarkFolderAndChild } from '~/stores/bookmark-folder';
 import { useSWRMUTxPageInfo } from '~/stores/page';
@@ -34,7 +34,7 @@ export const BookmarkFolderMenu = (props: BookmarkFolderMenuProps): JSX.Element
 
   const [selectedItem, setSelectedItem] = useState<string | null>(null);
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { data: bookmarkFolders, mutate: mutateBookmarkFolders } = useSWRxBookmarkFolderAndChild(currentUser?._id);
 
   const { trigger: mutateCurrentUserBookmarks } = useSWRMUTxCurrentUserBookmarks();

+ 2 - 2
apps/app/src/client/components/Comments.tsx

@@ -8,8 +8,8 @@ import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { debounce } from 'throttle-debounce';
 
+import { useCurrentUser } from '~/states/global';
 import { useIsTrashPage } from '~/states/page';
-import { useCurrentUser } from '~/stores-universal/context';
 import { useSWRxPageComment } from '~/stores/comment';
 import { useSWRMUTxPageInfo } from '~/stores/page';
 
@@ -38,7 +38,7 @@ export const Comments = (props: CommentsProps): JSX.Element => {
   const { mutate } = useSWRxPageComment(pageId);
   const { trigger: mutatePageInfo } = useSWRMUTxPageInfo(pageId);
   const [isDeleted] = useIsTrashPage();
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const pageCommentParentRef = useRef<HTMLDivElement>(null);
 

+ 2 - 2
apps/app/src/client/components/InvitedForm.tsx

@@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next';
 import { useRouter } from 'next/router';
 
 import { apiv3Post } from '~/client/util/apiv3-client';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 
 type InvitedFormProps = {
@@ -17,7 +17,7 @@ export const InvitedForm = (props: InvitedFormProps): JSX.Element => {
 
   const { t } = useTranslation();
   const router = useRouter();
-  const { data: user } = useCurrentUser();
+  const [user] = useCurrentUser();
   const [loginErrors, setLoginErrors] = useState<Error[]>([]);
   const [isLoading, setIsLoading] = useState(false);
 

+ 2 - 2
apps/app/src/client/components/Me/ProfileImageSettings.tsx

@@ -8,7 +8,7 @@ import ImageCropModal from '~/client/components/Common/ImageCropModal';
 import { apiPost, apiPostForm } from '~/client/util/apiv1-client';
 import { apiv3Put } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 import { generateGravatarSrc, GRAVATAR_DEFAULT } from '~/utils/gravatar';
 
 const DEFAULT_IMAGE = '/images/icons/user.svg';
@@ -17,7 +17,7 @@ const DEFAULT_IMAGE = '/images/icons/user.svg';
 const ProfileImageSettings = (): JSX.Element => {
   const { t } = useTranslation();
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const [isGravatarEnabled, setGravatarEnabled] = useState(currentUser?.isGravatarEnabled);
   const [uploadedPictureSrc, setUploadedPictureSrc] = useState(() => {

+ 5 - 3
apps/app/src/client/components/PageComment/CommentEditor.tsx

@@ -20,7 +20,7 @@ import { uploadAttachments } from '~/client/services/upload-attachments';
 import { toastError } from '~/client/util/toastr';
 import { useCurrentPagePath } from '~/states/page';
 import {
-  useCurrentUser, useIsSlackConfigured, useAcceptedUploadFileType,
+  useIsSlackConfigured, useAcceptedUploadFileType,
 } from '~/stores-universal/context';
 import { useNextThemes } from '~/stores-universal/use-next-themes';
 import { useSWRxPageComment } from '~/stores/comment';
@@ -40,6 +40,8 @@ import { SwitchingButtonGroup } from './SwitchingButtonGroup';
 import '@growi/editor/dist/style.css';
 import styles from './CommentEditor.module.scss';
 
+import { useCurrentUser } from '~/states/global';
+
 
 const logger = loggerFactory('growi:components:CommentEditor');
 
@@ -77,7 +79,7 @@ export const CommentEditor = (props: CommentEditorProps): JSX.Element => {
     currentCommentId, commentBody, onCanceled, onCommented,
   } = props;
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const [currentPagePath] = useCurrentPagePath();
   const { update: updateComment, post: postComment } = useSWRxPageComment(pageId);
   const { data: isSlackEnabled, mutate: mutateIsSlackEnabled } = useIsSlackEnabled();
@@ -321,7 +323,7 @@ export const CommentEditorPre = (props: CommentEditorProps): JSX.Element => {
 
   const { onCommented, onCanceled, ...rest } = props;
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { mutate: mutateResolvedTheme } = useResolvedThemeForEditor();
   const { resolvedTheme } = useNextThemes();
   mutateResolvedTheme({ themeData: resolvedTheme });

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

@@ -18,7 +18,8 @@ import { debounce } from 'throttle-debounce';
 import { useCreateTemplatePage } from '~/client/services/create-page';
 import { useCreatePage } from '~/client/services/create-page/use-create-page';
 import { useToastrOnError } from '~/client/services/use-toastr-on-error';
-import { useCurrentUser, useIsSearchServiceReachable } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
+import { useIsSearchServiceReachable } from '~/stores-universal/context';
 import { usePageCreateModal } from '~/stores/modal';
 
 
@@ -33,7 +34,7 @@ const {
 const PageCreateModal: React.FC = () => {
   const { t } = useTranslation();
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const { data: pageCreateModalData, close: closeCreateModal } = usePageCreateModal();
 

+ 2 - 2
apps/app/src/client/components/PageEditor/ConflictDiffModal.tsx

@@ -14,8 +14,8 @@ import {
   Modal, ModalHeader, ModalBody, ModalFooter,
 } from 'reactstrap';
 
+import { useCurrentUser } from '~/states/global';
 import { useCurrentPageData, useRemoteRevisionBody, useRemoteRevisionId } from '~/states/page';
-import { useCurrentUser } from '~/stores-universal/context';
 import { useConflictDiffModal } from '~/stores/modal';
 import {
   useRemoteRevisionLastUpdatedAt, useRemoteRevisionLastUpdateUser,
@@ -186,7 +186,7 @@ const ConflictDiffModalCore = (props: ConflictDiffModalCoreProps): JSX.Element =
 
 
 export const ConflictDiffModal = (): JSX.Element => {
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const [currentPage] = useCurrentPageData();
   const { data: conflictDiffModalStatus } = useConflictDiffModal();
 

+ 2 - 2
apps/app/src/client/components/PageEditor/EditorNavbarBottom/GrantSelector.tsx

@@ -16,8 +16,8 @@ import {
 
 import type { UserRelatedGroupsData } from '~/interfaces/page';
 import { UserGroupPageGrantStatus } from '~/interfaces/page';
+import { useCurrentUser } from '~/states/global';
 import { useCurrentPageId } from '~/states/page';
-import { useCurrentUser } from '~/stores-universal/context';
 import { useSWRxCurrentGrantData } from '~/stores/page';
 import { useSelectedGrant } from '~/stores/ui';
 
@@ -62,7 +62,7 @@ export const GrantSelector = (props: Props): JSX.Element => {
 
   const [isSelectGroupModalShown, setIsSelectGroupModalShown] = useState(false);
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const shouldFetch = isSelectGroupModalShown;
   const { data: selectedGrant, mutate: mutateSelectedGrant } = useSelectedGrant();

+ 5 - 4
apps/app/src/client/components/PageEditor/PageEditor.tsx

@@ -30,8 +30,8 @@ import {
   usePageNotFound,
 } from '~/states/page';
 import {
-  useDefaultIndentSize, useCurrentUser,
-  useCurrentPathname, useIsEnabledAttachTitleHeader,
+  useDefaultIndentSize,
+  useIsEnabledAttachTitleHeader,
   useIsEditable, useIsIndentSizeForced,
   useAcceptedUploadFileType, useIsEnableUnifiedMergeView,
 } from '~/stores-universal/context';
@@ -61,6 +61,7 @@ import { useConflictResolver, useConflictEffect, type ConflictHandler } from './
 
 import '@growi/editor/dist/style.css';
 import { useTemplateBody } from '~/states/page/hooks';
+import { useCurrentPathname, useCurrentUser } from '~/states/global';
 
 
 const logger = loggerFactory('growi:PageEditor');
@@ -98,7 +99,7 @@ export const PageEditorSubstance = (props: Props): JSX.Element => {
   const [isNotFound] = usePageNotFound();
   const [pageId] = useCurrentPageId();
   const [currentPagePath] = useCurrentPagePath();
-  const { data: currentPathname } = useCurrentPathname();
+  const [currentPathname] = useCurrentPathname();
   const [currentPage] = useCurrentPageData();
   const { data: selectedGrant } = useSelectedGrant();
   const { data: editingMarkdown } = useEditingMarkdown();
@@ -114,7 +115,7 @@ export const PageEditorSubstance = (props: Props): JSX.Element => {
   const { data: acceptedUploadFileType } = useAcceptedUploadFileType();
   const { data: editorSettings } = useEditorSettings();
   const { mutate: mutateIsGrantNormalized } = useSWRxCurrentGrantData(currentPage?._id);
-  const { data: user } = useCurrentUser();
+  const [user] = useCurrentUser();
   const { mutate: mutateEditingUsers } = useEditingClients();
   const onConflict = useConflictResolver();
   const { data: reservedNextCaretLine, mutate: mutateReservedNextCaretLine } = useReservedNextCaretLine();

+ 2 - 2
apps/app/src/client/components/SearchPage/SearchResultContent.tsx

@@ -17,7 +17,7 @@ import { PagePathNav } from '~/components/Common/PagePathNav';
 import type { IPageWithSearchMeta } from '~/interfaces/search';
 import type { OnDuplicatedFunction, OnRenamedFunction, OnDeletedFunction } from '~/interfaces/ui';
 import { useShouldExpandContent } from '~/services/layout/use-should-expand-content';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 import {
   usePageDuplicateModal, usePageRenameModal, usePageDeleteModal,
 } from '~/stores/modal';
@@ -125,7 +125,7 @@ export const SearchResultContent: FC<Props> = (props: Props) => {
   const { open: openRenameModal } = usePageRenameModal();
   const { open: openDeleteModal } = usePageDeleteModal();
   const { data: rendererOptions } = useSearchResultOptions(pageWithMeta.data.path, highlightKeywords);
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const shouldExpandContent = useShouldExpandContent(page);
 

+ 2 - 2
apps/app/src/client/components/Sidebar/Bookmarks/BookmarkContents.tsx

@@ -6,7 +6,7 @@ import { BookmarkFolderNameInput } from '~/client/components/Bookmarks/BookmarkF
 import { BookmarkFolderTree } from '~/client/components/Bookmarks/BookmarkFolderTree';
 import { addNewFolder } from '~/client/util/bookmark-utils';
 import { toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 import { useSWRxBookmarkFolderAndChild } from '~/stores/bookmark-folder';
 
 export const BookmarkContents = (): JSX.Element => {
@@ -14,7 +14,7 @@ export const BookmarkContents = (): JSX.Element => {
   const { t } = useTranslation();
   const [isCreateAction, setIsCreateAction] = useState<boolean>(false);
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { mutate: mutateBookmarkFolders } = useSWRxBookmarkFolderAndChild(currentUser?._id);
 
   const onClickNewBookmarkFolder = useCallback(() => {

+ 2 - 2
apps/app/src/client/components/Sidebar/PageCreateButton/hooks/use-create-todays-memo.tsx

@@ -6,7 +6,7 @@ import { format } from 'date-fns/format';
 import { useTranslation } from 'react-i18next';
 
 import { useCreatePage } from '~/client/services/create-page';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 
 type UseCreateTodaysMemo = () => {
@@ -18,7 +18,7 @@ type UseCreateTodaysMemo = () => {
 export const useCreateTodaysMemo: UseCreateTodaysMemo = () => {
   const { t } = useTranslation('commons');
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { isCreating, create } = useCreatePage();
 
   const isCreatable = currentUser != null;

+ 2 - 2
apps/app/src/client/components/Sidebar/SidebarNav/PersonalDropdown.tsx

@@ -10,7 +10,7 @@ import {
 
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { toastError } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { SkeletonItem } from './SkeletonItem';
 
@@ -18,7 +18,7 @@ import styles from './PersonalDropdown.module.scss';
 
 export const PersonalDropdown = (): JSX.Element => {
   const { t } = useTranslation('commons');
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   if (currentUser == null) {
     return <SkeletonItem />;

+ 2 - 2
apps/app/src/client/components/UsersHomepageFooter.tsx

@@ -3,7 +3,7 @@ import React, { useState, type JSX } from 'react';
 import { useTranslation } from 'next-i18next';
 
 import { RecentCreated } from '~/client/components/RecentCreated/RecentCreated';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { BookmarkFolderTree } from './Bookmarks/BookmarkFolderTree';
 
@@ -17,7 +17,7 @@ export const UsersHomepageFooter = (props: UsersHomepageFooterProps): JSX.Elemen
   const { t } = useTranslation();
   const { creatorId } = props;
   const [isExpanded, setIsExpanded] = useState<boolean>(false);
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const isOperable = currentUser?._id === creatorId;
 
   return (

+ 2 - 2
apps/app/src/components/PageView/PageAlerts/FixPageGrantAlert.tsx

@@ -10,8 +10,8 @@ import {
 
 import { UserGroupPageGrantStatus, type IPageGrantData } from '~/interfaces/page';
 import type { PopulatedGrantedGroup, IRecordApplicableGrant, IResGrantData } from '~/interfaces/page-grant';
+import { useCurrentUser } from '~/states/global';
 import { useCurrentPageData } from '~/states/page';
-import { useCurrentUser } from '~/stores-universal/context';
 import { useSWRxApplicableGrant, useSWRxCurrentGrantData } from '~/stores/page';
 
 type ModalProps = {
@@ -284,7 +284,7 @@ const FixPageGrantModal = (props: ModalProps): JSX.Element => {
 export const FixPageGrantAlert = (): JSX.Element => {
   const { t } = useTranslation();
 
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const [pageData] = useCurrentPageData();
   const hasParent = pageData != null ? pageData.parent != null : false;
   const pageId = pageData?._id;

+ 2 - 2
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AccessScopeDropdown.tsx

@@ -5,7 +5,7 @@ import {
   UncontrolledDropdown, DropdownToggle, DropdownMenu, DropdownItem, Label,
 } from 'reactstrap';
 
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { AiAssistantAccessScope } from '../../../../interfaces/ai-assistant';
 
@@ -25,7 +25,7 @@ export const AccessScopeDropdown: React.FC<Props> = (props: Props) => {
   } = props;
 
   const { t } = useTranslation();
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   const getAccessScopeLabel = useCallback((accessScope: AiAssistantAccessScope) => {
     const baseLabel = `modal_ai_assistant.access_scope.${accessScope}`;

+ 3 - 2
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantManagementModal/AiAssistantManagementHome.tsx

@@ -9,7 +9,8 @@ import {
 
 import { AiAssistantShareScope, AiAssistantAccessScope } from '~/features/openai/interfaces/ai-assistant';
 import type { PopulatedGrantedGroup } from '~/interfaces/page-grant';
-import { useCurrentUser, useLimitLearnablePageCountPerAssistant } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
+import { useLimitLearnablePageCountPerAssistant } from '~/stores-universal/context';
 
 import type { SelectedPage } from '../../../../interfaces/selected-page';
 import { determineShareScope } from '../../../../utils/determine-share-scope';
@@ -49,7 +50,7 @@ export const AiAssistantManagementHome = (props: Props): JSX.Element => {
   } = props;
 
   const { t } = useTranslation();
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { data: limitLearnablePageCountPerAssistant } = useLimitLearnablePageCountPerAssistant();
   const { close: closeAiAssistantManagementModal, changePageMode } = useAiAssistantManagementModal();
 

+ 2 - 2
apps/app/src/features/openai/client/components/AiAssistant/Sidebar/AiAssistantList.tsx

@@ -6,7 +6,7 @@ import { useTranslation } from 'react-i18next';
 import { Collapse } from 'reactstrap';
 
 import { toastError, toastSuccess } from '~/client/util/toastr';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 import loggerFactory from '~/utils/logger';
 
 import { AiAssistantShareScope, type AiAssistantHasId } from '../../../../interfaces/ai-assistant';
@@ -155,7 +155,7 @@ export const AiAssistantList: React.FC<AiAssistantListProps> = ({
 }) => {
   const { t } = useTranslation();
   const { openChat } = useAiAssistantSidebar();
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
   const { open: openAiAssistantManagementModal } = useAiAssistantManagementModal();
 
   const [isCollapsed, setIsCollapsed] = useState(false);

+ 2 - 3
apps/app/src/stores/bookmark.ts

@@ -4,8 +4,7 @@ import useSWR from 'swr';
 import useSWRImmutable from 'swr/immutable';
 import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation';
 
-
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser } from '~/states/global';
 
 import { apiv3Get } from '../client/util/apiv3-client';
 import type { IBookmarkInfo } from '../interfaces/bookmark-info';
@@ -29,7 +28,7 @@ export const useSWRxUserBookmarks = (userId: string | null): SWRResponse<(IPageH
 };
 
 export const useSWRMUTxCurrentUserBookmarks = (): SWRMutationResponse<(IPageHasId | null)[], Error> => {
-  const { data: currentUser } = useCurrentUser();
+  const [currentUser] = useCurrentUser();
 
   return useSWRMutation(
     currentUser != null ? `/bookmarks/${currentUser?._id}` : null,

+ 5 - 4
apps/app/src/stores/ui.tsx

@@ -17,12 +17,13 @@ import useSWRImmutable from 'swr/immutable';
 
 import type { IPageSelectedGrant } from '~/interfaces/page';
 import type { UpdateDescCountData } from '~/interfaces/websocket';
+import { useIsReadOnlyUser } from '~/states/context';
+import { useCurrentUser } from '~/states/global';
 import {
   usePageNotFound, useCurrentPagePath, useIsTrashPage, useCurrentPageId,
 } from '~/states/page';
 import {
-  useIsEditable, useIsReadOnlyUser,
-  useIsSharedUser, useIsIdenticalPath, useCurrentUser, useShareLinkId,
+  useIsEditable, useIsSharedUser, useIsIdenticalPath, useShareLinkId,
 } from '~/stores-universal/context';
 import { EditorMode, useEditorMode } from '~/stores-universal/ui';
 import loggerFactory from '~/utils/logger';
@@ -232,13 +233,13 @@ export const useCommentEditorDirtyMap = (): SWRResponse<Map<string, boolean>, Er
 export const useIsAbleToShowTrashPageManagementButtons = (): SWRResponse<boolean, Error> => {
   const key = 'isAbleToShowTrashPageManagementButtons';
 
-  const { data: _currentUser } = useCurrentUser();
+  const [_currentUser] = useCurrentUser();
   const isCurrentUserExist = _currentUser != null;
 
   const [_currentPageId] = useCurrentPageId();
   const [_isNotFound] = usePageNotFound();
   const [_isTrashPage] = useIsTrashPage();
-  const { data: _isReadOnlyUser } = useIsReadOnlyUser();
+  const [_isReadOnlyUser] = useIsReadOnlyUser();
   const isPageExist = _currentPageId != null && _isNotFound === false;
   const isTrashPage = isPageExist && _isTrashPage === true;
   const isReadOnlyUser = isPageExist && _isReadOnlyUser === true;