From 6543d88cbe5cea2596bae47f6bfd26c3048aab83 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Thu, 23 Jan 2025 19:41:31 +0300 Subject: [PATCH] F: Implement react-query pt3 --- .../frontend/src/app/ApplicationLayout.tsx | 2 +- rsconcept/frontend/src/app/GlobalDialogs.tsx | 2 +- .../src/{context => app}/GlobalOssContext.tsx | 64 +- .../frontend/src/app/GlobalProviders.tsx | 5 +- .../src/app/Navigation/Navigation.tsx | 6 +- .../src/app/Navigation/NavigationButton.tsx | 2 +- .../Navigation}/NavigationContext.tsx | 0 .../src/app/Navigation/UserDropdown.tsx | 2 +- .../frontend/src/app/Navigation/UserMenu.tsx | 2 +- .../frontend/src/backend/apiTransport.ts | 2 +- rsconcept/frontend/src/backend/auth/api.ts | 18 +- .../src/backend/auth/useChangePassword.tsx | 9 +- .../frontend/src/backend/auth/useLogin.tsx | 11 +- .../frontend/src/backend/auth/useLogout.tsx | 4 +- .../backend/auth/useRequestPasswordReset.tsx | 5 +- .../src/backend/auth/useResetPassword.tsx | 16 +- .../{apiConfiguration.ts => axiosInstance.ts} | 0 rsconcept/frontend/src/backend/cctext.ts | 28 - rsconcept/frontend/src/backend/cctext/api.ts | 26 + .../src/backend/cctext/useGenerateLexeme.tsx | 19 + .../src/backend/cctext/useInflectText.tsx | 19 + .../backend/cctext/useIsProcessingCctext.tsx | 8 + .../src/backend/cctext/useParseText.tsx | 17 + .../frontend/src/backend/configuration.ts | 9 + rsconcept/frontend/src/backend/library.ts | 117 --- rsconcept/frontend/src/backend/library/api.ts | 137 ++++ .../backend/library/useApplyLibraryFilter.tsx | 47 ++ .../src/backend/library/useCloneItem.tsx | 21 + .../src/backend/library/useCreateItem.tsx | 24 + .../src/backend/library/useDeleteItem.tsx | 26 + .../src/backend/library/useFolders.tsx | 17 + .../library/useIsProcessingLibrary.tsx | 8 + .../src/backend/library/useLibrary.tsx | 21 + .../src/backend/library/useRenameLocation.tsx | 18 + .../backend/library/useSetAccessPolicy.tsx | 41 ++ .../src/backend/library/useSetEditors.tsx | 39 + .../src/backend/library/useSetLocation.tsx | 41 ++ .../src/backend/library/useSetOwner.tsx | 42 ++ .../src/backend/library/useTemplates.tsx | 17 + .../src/backend/library/useUpdateItem.tsx | 34 + .../backend/library/useUpdateTimestamp.tsx | 17 + .../src/backend/library/useVersionCreate.tsx | 30 + .../src/backend/library/useVersionDelete.tsx | 33 + .../src/backend/library/useVersionRestore.tsx | 29 + .../src/backend/library/useVersionUpdate.tsx | 38 + rsconcept/frontend/src/backend/oss.ts | 92 --- rsconcept/frontend/src/backend/oss/api.ts | 148 ++++ .../src/backend/oss/useFindPredecessor.tsx | 19 + .../src/backend/oss/useInputCreate.tsx | 28 + .../src/backend/oss/useInputUpdate.tsx | 27 + .../src/backend/oss/useIsProcessingOss.tsx | 11 + rsconcept/frontend/src/backend/oss/useOSS.tsx | 47 ++ .../src/backend/oss/useOperationCreate.tsx | 30 + .../src/backend/oss/useOperationDelete.tsx | 27 + .../src/backend/oss/useOperationExecute.tsx | 27 + .../src/backend/oss/useOperationUpdate.tsx | 27 + .../backend/oss/useRelocateConstituents.tsx | 27 + .../src/backend/oss/useUpdatePositions.tsx | 25 + rsconcept/frontend/src/backend/queryClient.ts | 6 +- rsconcept/frontend/src/backend/rsform/api.ts | 191 +++++ .../backend/rsform/useCheckConstituenta.tsx | 26 + .../src/backend/rsform/useCstCreate.tsx | 31 + .../src/backend/rsform/useCstDelete.tsx | 30 + .../src/backend/rsform/useCstMove.tsx | 29 + .../src/backend/rsform/useCstRename.tsx | 31 + .../src/backend/rsform/useCstSubstitute.tsx | 30 + .../src/backend/rsform/useCstUpdate.tsx | 33 + .../src/backend/rsform/useDownloadRSForm.tsx | 21 + .../src/backend/rsform/useInlineSynthesis.tsx | 31 + .../backend/rsform/useIsProcessingRSForm.tsx | 11 + .../backend/rsform/useProduceStructure.tsx | 31 + .../frontend/src/backend/rsform/useRSForm.tsx | 34 + .../src/backend/rsform/useRSForms.tsx | 23 + .../src/backend/rsform/useResetAliases.tsx | 26 + .../src/backend/rsform/useRestoreOrder.tsx | 25 + .../src/backend/rsform/useUploadTRS.tsx | 28 + rsconcept/frontend/src/backend/rsforms.ts | 158 ---- rsconcept/frontend/src/backend/users/api.ts | 11 +- .../frontend/src/backend/users/useSignup.tsx | 13 +- .../src/backend/users/useUpdateProfile.tsx | 11 +- .../frontend/src/backend/users/useUsers.tsx | 3 +- rsconcept/frontend/src/backend/versions.ts | 30 - .../src/components/RSInput/RSInput.tsx | 2 +- .../src/components/info/BadgeGrammeme.tsx | 2 +- .../src/components/info/InfoCstStatus.tsx | 2 +- .../src/components/info/InfoError.tsx | 2 +- .../src/components/select/PickSchema.tsx | 4 - .../src/components/select/SelectLocation.tsx | 11 +- .../select/SelectLocationContext.tsx | 4 - .../frontend/src/components/ui/Checkbox.tsx | 4 +- .../src/components/ui/CheckboxTristate.tsx | 4 +- .../frontend/src/components/ui/PrettyJSON.tsx | 3 +- .../src/components/wrap/ExpectedAnonymous.tsx | 2 +- .../frontend/src/context/LibraryContext.tsx | 322 --------- rsconcept/frontend/src/context/OssContext.tsx | 390 ---------- .../frontend/src/context/RSFormContext.tsx | 592 --------------- .../src/dialogs/DlgChangeInputSchema.tsx | 6 +- .../src/dialogs/DlgCloneLibraryItem.tsx | 16 +- .../src/dialogs/DlgCreateCst/DlgCreateCst.tsx | 7 +- .../dialogs/DlgCreateCst/FormCreateCst.tsx | 7 +- .../DlgCreateOperation/DlgCreateOperation.tsx | 19 +- .../DlgCreateOperation/TabInputOperation.tsx | 6 +- .../frontend/src/dialogs/DlgCreateVersion.tsx | 16 +- .../dialogs/DlgCstTemplate/DlgCstTemplate.tsx | 27 +- .../dialogs/DlgCstTemplate/TabArguments.tsx | 6 +- .../dialogs/DlgCstTemplate/TabTemplate.tsx | 4 +- .../DlgEditOperation/DlgEditOperation.tsx | 48 +- .../dialogs/DlgEditOperation/TabSynthesis.tsx | 40 +- .../TabSyntacticReference.tsx | 2 +- .../DlgEditWordForms/DlgEditWordForms.tsx | 34 +- .../DlgInlineSynthesis/DlgInlineSynthesis.tsx | 18 +- .../dialogs/DlgInlineSynthesis/TabSchema.tsx | 11 +- .../src/dialogs/DlgRelocateConstituents.tsx | 26 +- .../frontend/src/dialogs/DlgRenameCst.tsx | 7 +- .../frontend/src/dialogs/DlgSubstituteCst.tsx | 6 +- .../frontend/src/dialogs/DlgUploadRSForm.tsx | 12 +- .../src/hooks/useCheckConstituenta.ts | 40 -- .../frontend/src/hooks/useConceptText.ts | 56 -- rsconcept/frontend/src/hooks/useOssDetails.ts | 66 -- .../frontend/src/hooks/useRSFormCache.ts | 56 -- .../frontend/src/hooks/useRSFormDetails.ts | 61 -- rsconcept/frontend/src/hooks/useRSParse.ts | 32 + rsconcept/frontend/src/models/language.ts | 13 - rsconcept/frontend/src/models/library.ts | 44 -- rsconcept/frontend/src/models/oss.ts | 71 +- rsconcept/frontend/src/models/rsform.ts | 91 +-- rsconcept/frontend/src/models/user.ts | 14 - .../pages/CreateItemPage/FormCreateItem.tsx | 22 +- rsconcept/frontend/src/pages/HomePage.tsx | 2 +- .../src/pages/LibraryPage/LibraryPage.tsx | 47 +- .../pages/LibraryPage/TableLibraryItems.tsx | 2 +- .../src/pages/LibraryPage/ToolbarSearch.tsx | 2 +- .../pages/LibraryPage/ViewSideLocation.tsx | 8 +- rsconcept/frontend/src/pages/LoginPage.tsx | 2 +- .../src/pages/ManualsPage/ManualsPage.tsx | 2 +- .../OssPage}/DlgChangeLocation.tsx | 10 +- .../OssPage/EditorOssCard/EditorOssCard.tsx | 6 +- .../pages/OssPage/EditorOssCard/FormOSS.tsx | 16 +- .../pages/OssPage/EditorOssGraph/OssFlow.tsx | 18 +- .../src/pages/OssPage/MenuOssTabs.tsx | 8 +- .../src/pages/OssPage/OssEditContext.tsx | 99 ++- .../frontend/src/pages/OssPage/OssPage.tsx | 13 +- .../frontend/src/pages/OssPage/OssTabs.tsx | 13 +- .../frontend/src/pages/PasswordChangePage.tsx | 2 +- .../EditorConstituenta/ControlsOverlay.tsx | 2 +- .../EditorConstituenta/FormConstituenta.tsx | 41 +- .../EditorRSExpression/EditorRSExpression.tsx | 19 +- .../ToolbarRSExpression.tsx | 6 +- .../EditorRSFormCard/EditorLibraryItem.tsx | 2 +- .../EditorRSFormCard/EditorRSFormCard.tsx | 6 +- .../EditorRSFormCard/FormRSForm.tsx | 15 +- .../EditorTermGraph/SchemasGuide.tsx | 6 +- .../src/pages/RSFormPage/MenuRSTabs.tsx | 16 +- .../src/pages/RSFormPage/RSEditContext.tsx | 677 +++++++++--------- .../frontend/src/pages/RSFormPage/RSTabs.tsx | 27 +- .../frontend/src/pages/RSFormPage/index.tsx | 2 +- .../src/pages/RegisterPage/FormSignup.tsx | 2 +- .../pages/UserProfilePage/EditorPassword.tsx | 2 +- .../pages/UserProfilePage/EditorProfile.tsx | 2 +- rsconcept/frontend/src/stores/dialogs.ts | 2 +- .../frontend/src/stores/librarySearch.ts | 2 +- rsconcept/frontend/src/utils/codemirror.ts | 2 +- 162 files changed, 2667 insertions(+), 3113 deletions(-) rename rsconcept/frontend/src/{context => app}/GlobalOssContext.tsx (51%) rename rsconcept/frontend/src/{context => app/Navigation}/NavigationContext.tsx (100%) rename rsconcept/frontend/src/backend/{apiConfiguration.ts => axiosInstance.ts} (100%) delete mode 100644 rsconcept/frontend/src/backend/cctext.ts create mode 100644 rsconcept/frontend/src/backend/cctext/api.ts create mode 100644 rsconcept/frontend/src/backend/cctext/useGenerateLexeme.tsx create mode 100644 rsconcept/frontend/src/backend/cctext/useInflectText.tsx create mode 100644 rsconcept/frontend/src/backend/cctext/useIsProcessingCctext.tsx create mode 100644 rsconcept/frontend/src/backend/cctext/useParseText.tsx create mode 100644 rsconcept/frontend/src/backend/configuration.ts delete mode 100644 rsconcept/frontend/src/backend/library.ts create mode 100644 rsconcept/frontend/src/backend/library/api.ts create mode 100644 rsconcept/frontend/src/backend/library/useApplyLibraryFilter.tsx create mode 100644 rsconcept/frontend/src/backend/library/useCloneItem.tsx create mode 100644 rsconcept/frontend/src/backend/library/useCreateItem.tsx create mode 100644 rsconcept/frontend/src/backend/library/useDeleteItem.tsx create mode 100644 rsconcept/frontend/src/backend/library/useFolders.tsx create mode 100644 rsconcept/frontend/src/backend/library/useIsProcessingLibrary.tsx create mode 100644 rsconcept/frontend/src/backend/library/useLibrary.tsx create mode 100644 rsconcept/frontend/src/backend/library/useRenameLocation.tsx create mode 100644 rsconcept/frontend/src/backend/library/useSetAccessPolicy.tsx create mode 100644 rsconcept/frontend/src/backend/library/useSetEditors.tsx create mode 100644 rsconcept/frontend/src/backend/library/useSetLocation.tsx create mode 100644 rsconcept/frontend/src/backend/library/useSetOwner.tsx create mode 100644 rsconcept/frontend/src/backend/library/useTemplates.tsx create mode 100644 rsconcept/frontend/src/backend/library/useUpdateItem.tsx create mode 100644 rsconcept/frontend/src/backend/library/useUpdateTimestamp.tsx create mode 100644 rsconcept/frontend/src/backend/library/useVersionCreate.tsx create mode 100644 rsconcept/frontend/src/backend/library/useVersionDelete.tsx create mode 100644 rsconcept/frontend/src/backend/library/useVersionRestore.tsx create mode 100644 rsconcept/frontend/src/backend/library/useVersionUpdate.tsx delete mode 100644 rsconcept/frontend/src/backend/oss.ts create mode 100644 rsconcept/frontend/src/backend/oss/api.ts create mode 100644 rsconcept/frontend/src/backend/oss/useFindPredecessor.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useInputCreate.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useInputUpdate.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useIsProcessingOss.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useOSS.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useOperationCreate.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useOperationDelete.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useOperationExecute.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useOperationUpdate.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useRelocateConstituents.tsx create mode 100644 rsconcept/frontend/src/backend/oss/useUpdatePositions.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/api.ts create mode 100644 rsconcept/frontend/src/backend/rsform/useCheckConstituenta.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstCreate.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstDelete.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstMove.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstRename.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstSubstitute.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useCstUpdate.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useDownloadRSForm.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useInlineSynthesis.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useIsProcessingRSForm.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useProduceStructure.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useRSForm.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useRSForms.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useResetAliases.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useRestoreOrder.tsx create mode 100644 rsconcept/frontend/src/backend/rsform/useUploadTRS.tsx delete mode 100644 rsconcept/frontend/src/backend/rsforms.ts delete mode 100644 rsconcept/frontend/src/backend/versions.ts delete mode 100644 rsconcept/frontend/src/context/LibraryContext.tsx delete mode 100644 rsconcept/frontend/src/context/OssContext.tsx delete mode 100644 rsconcept/frontend/src/context/RSFormContext.tsx delete mode 100644 rsconcept/frontend/src/hooks/useCheckConstituenta.ts delete mode 100644 rsconcept/frontend/src/hooks/useConceptText.ts delete mode 100644 rsconcept/frontend/src/hooks/useOssDetails.ts delete mode 100644 rsconcept/frontend/src/hooks/useRSFormCache.ts delete mode 100644 rsconcept/frontend/src/hooks/useRSFormDetails.ts create mode 100644 rsconcept/frontend/src/hooks/useRSParse.ts rename rsconcept/frontend/src/{dialogs => pages/OssPage}/DlgChangeLocation.tsx (90%) diff --git a/rsconcept/frontend/src/app/ApplicationLayout.tsx b/rsconcept/frontend/src/app/ApplicationLayout.tsx index ea527ea1..dc506950 100644 --- a/rsconcept/frontend/src/app/ApplicationLayout.tsx +++ b/rsconcept/frontend/src/app/ApplicationLayout.tsx @@ -5,7 +5,7 @@ import ConceptToaster from '@/app/ConceptToaster'; import Footer from '@/app/Footer'; import Navigation from '@/app/Navigation'; import Loader from '@/components/ui/Loader'; -import { NavigationState } from '@/context/NavigationContext'; +import { NavigationState } from '@/app/Navigation/NavigationContext'; import { useAppLayoutStore, useMainHeight, useViewportHeight } from '@/stores/appLayout'; import { globals } from '@/utils/constants'; diff --git a/rsconcept/frontend/src/app/GlobalDialogs.tsx b/rsconcept/frontend/src/app/GlobalDialogs.tsx index a20ce7db..25560b80 100644 --- a/rsconcept/frontend/src/app/GlobalDialogs.tsx +++ b/rsconcept/frontend/src/app/GlobalDialogs.tsx @@ -1,7 +1,7 @@ 'use client'; import DlgChangeInputSchema from '@/dialogs/DlgChangeInputSchema'; -import DlgChangeLocation from '@/dialogs/DlgChangeLocation'; +import DlgChangeLocation from '@/pages/OssPage/DlgChangeLocation'; import DlgCloneLibraryItem from '@/dialogs/DlgCloneLibraryItem'; import DlgCreateCst from '@/dialogs/DlgCreateCst'; import DlgCreateOperation from '@/dialogs/DlgCreateOperation'; diff --git a/rsconcept/frontend/src/context/GlobalOssContext.tsx b/rsconcept/frontend/src/app/GlobalOssContext.tsx similarity index 51% rename from rsconcept/frontend/src/context/GlobalOssContext.tsx rename to rsconcept/frontend/src/app/GlobalOssContext.tsx index fd803c88..30a40e87 100644 --- a/rsconcept/frontend/src/context/GlobalOssContext.tsx +++ b/rsconcept/frontend/src/app/GlobalOssContext.tsx @@ -2,24 +2,22 @@ import { createContext, useCallback, useContext, useState } from 'react'; +import { useOss, useOssInvalidate, useOssUpdate } from '@/backend/oss/useOSS'; import { ErrorData } from '@/components/info/InfoError'; -import useOssDetails from '@/hooks/useOssDetails'; import { LibraryItemID } from '@/models/library'; import { IOperationSchema, IOperationSchemaData } from '@/models/oss'; import { contextOutsideScope } from '@/utils/labels'; interface IGlobalOssContext { schema: IOperationSchema | undefined; - setID: (id: string | undefined) => void; + setID: (id: LibraryItemID | undefined) => void; setData: (data: IOperationSchemaData) => void; loading: boolean; loadingError: ErrorData; - isValid: boolean; - invalidate: () => void; + invalidate: () => Promise; invalidateItem: (target: LibraryItemID) => void; partialUpdate: (data: Partial) => void; - reload: (callback?: () => void) => void; } const GlobalOssContext = createContext(null); @@ -32,58 +30,18 @@ export const useGlobalOss = (): IGlobalOssContext => { }; export const GlobalOssState = ({ children }: React.PropsWithChildren) => { - const [isValid, setIsValid] = useState(true); - const [ossID, setIdInternal] = useState(undefined); - const { - schema: schema, // prettier: split lines - error: loadingError, - setSchema: setDataInternal, - loading: loading, - reload: reloadInternal, - partialUpdate - } = useOssDetails({ target: ossID }); - - const reload = useCallback( - (callback?: () => void) => { - reloadInternal(undefined, () => { - setIsValid(true); - callback?.(); - }); - }, - [reloadInternal] - ); - - const setData = useCallback( - (data: IOperationSchemaData) => { - setDataInternal(data); - setIsValid(true); - }, - [setDataInternal] - ); - - const setID = useCallback( - (id: string | undefined) => { - setIdInternal(prev => { - if (prev === id && !isValid) { - reload(); - } - return id; - }); - }, - [setIdInternal, isValid, reload] - ); - - const invalidate = useCallback(() => { - setIsValid(false); - }, []); + const [ossID, setID] = useState(undefined); + const { schema: schema, error: loadingError, isLoading: loading } = useOss({ itemID: ossID }); + const { update, partialUpdate } = useOssUpdate({ itemID: ossID }); + const { invalidate } = useOssInvalidate({ itemID: ossID }); const invalidateItem = useCallback( (target: LibraryItemID) => { if (schema?.schemas.includes(target)) { - setIsValid(false); + invalidate().catch(console.error); } }, - [schema] + [invalidate, schema] ); return ( @@ -91,12 +49,10 @@ export const GlobalOssState = ({ children }: React.PropsWithChildren) => { value={{ schema, setID, - setData, + setData: update, loading, loadingError, - reload, partialUpdate, - isValid, invalidateItem, invalidate }} diff --git a/rsconcept/frontend/src/app/GlobalProviders.tsx b/rsconcept/frontend/src/app/GlobalProviders.tsx index 2dd21953..9785495a 100644 --- a/rsconcept/frontend/src/app/GlobalProviders.tsx +++ b/rsconcept/frontend/src/app/GlobalProviders.tsx @@ -6,8 +6,7 @@ import { ErrorBoundary } from 'react-error-boundary'; import { IntlProvider } from 'react-intl'; import { queryClient } from '@/backend/queryClient'; -import { GlobalOssState } from '@/context/GlobalOssContext'; -import { LibraryState } from '@/context/LibraryContext'; +import { GlobalOssState } from '@/app/GlobalOssContext'; import ErrorFallback from './ErrorFallback'; @@ -32,14 +31,12 @@ function GlobalProviders({ children }: React.PropsWithChildren) { > - {children} - ); diff --git a/rsconcept/frontend/src/app/Navigation/Navigation.tsx b/rsconcept/frontend/src/app/Navigation/Navigation.tsx index 571e7a87..b39f15e6 100644 --- a/rsconcept/frontend/src/app/Navigation/Navigation.tsx +++ b/rsconcept/frontend/src/app/Navigation/Navigation.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import { IconLibrary2, IconManuals, IconNewItem2 } from '@/components/Icons'; import { CProps } from '@/components/props'; -import { useConceptNavigation } from '@/context/NavigationContext'; +import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import useWindowSize from '@/hooks/useWindowSize'; import { useAppLayoutStore } from '@/stores/appLayout'; import { PARAMETER } from '@/utils/constants'; @@ -27,7 +27,7 @@ function Navigation() { return (