From 93f76d6b7e73333b16fc6825f087095c3a207c75 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 8 May 2024 13:45:42 +0200 Subject: [PATCH] Reduce active apollo queries --- .../manga/useManageMangaLibraryState.tsx | 38 +++++++------------ src/lib/requests/RequestManager.ts | 13 +++++++ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/components/manga/useManageMangaLibraryState.tsx b/src/components/manga/useManageMangaLibraryState.tsx index 4fdd4e6f..0e78c9e3 100644 --- a/src/components/manga/useManageMangaLibraryState.tsx +++ b/src/components/manga/useManageMangaLibraryState.tsx @@ -6,13 +6,13 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { useCallback, useMemo, useState } from 'react'; +import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { useCategorySelect } from '@/components/navbar/action/useCategorySelect.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { makeToast } from '@/components/util/Toast.tsx'; -import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; +import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts'; import { Categories } from '@/lib/data/Categories.ts'; import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; import { Mangas } from '@/lib/data/Mangas.ts'; @@ -28,17 +28,6 @@ export const useManageMangaLibraryState = ( const [isInLibrary, setIsInLibrary] = useState(manga.inLibrary); - const { - settings: { showAddToLibraryCategorySelectDialog }, - loading: areSettingsLoading, - } = useMetadataServerSettings(); - - const categories = requestManager.useGetCategories(); - const userCreatedCategories = useMemo( - () => Categories.getUserCreated(categories.data?.categories.nodes ?? []), - [categories.data?.categories.nodes], - ); - const addToLibrary = useCallback( (didSubmit: boolean, addToCategories: number[] = [], removeFromCategories: number[] = []) => { if (!didSubmit) { @@ -89,22 +78,23 @@ export const useManageMangaLibraryState = ( return; } - if (areSettingsLoading || categories.loading) { - makeToast(t('global.label.load_in_progress'), 'info'); + let showAddToLibraryCategorySelectDialog: boolean; + try { + showAddToLibraryCategorySelectDialog = (await getMetadataServerSettings()) + .showAddToLibraryCategorySelectDialog; + } catch (e) { + makeToast(t('global.error.label.failed_to_load_data'), 'error'); return; } - if (categories.error) { + let categories: Awaited['response']>; + try { + categories = await requestManager.getCategories().response; + } catch (e) { makeToast(t('category.error.label.request_failure'), 'error'); - categories - .refetch() - .catch( - defaultPromiseErrorHandler( - 'useManageMangaLibraryState::updateLibraryState: refetch categories', - ), - ); return; } + const userCreatedCategories = Categories.getUserCreated(categories.data.categories.nodes); let duplicatedLibraryMangas: | Awaited['response']> @@ -151,7 +141,7 @@ export const useManageMangaLibraryState = ( }; update().catch(defaultPromiseErrorHandler('useManageMangaLibraryState::updateLibraryState')); - }, [isInLibrary, removeFromLibrary, addToLibrary, areSettingsLoading, categories.loading]); + }, [isInLibrary, removeFromLibrary, addToLibrary]); return { CategorySelectComponent, diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/RequestManager.ts index 7b570468..8eac008e 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/RequestManager.ts @@ -2036,6 +2036,19 @@ export class RequestManager { ); } + public getCategories( + options?: QueryOptions, + ): AbortabaleApolloQueryResponse { + return this.doRequest( + GQLMethod.QUERY, + GET_CATEGORIES, + { + orderBy: CategoryOrderBy.Order, + }, + options, + ); + } + public createCategory( input: CreateCategoryInput, options?: MutationOptions,