From 09c7e804ba2a6f76615ebd3136ab4b490c38e7cc Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Fri, 27 Oct 2023 20:45:03 +0200 Subject: [PATCH] Refresh library mangas after update the gql updater subscription currently return stale data, thus, the mangas do net get updated in the cache --- src/components/library/UpdateChecker.tsx | 7 ++++++- src/screens/Library.tsx | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/library/UpdateChecker.tsx b/src/components/library/UpdateChecker.tsx index 891400ad..515b9489 100644 --- a/src/components/library/UpdateChecker.tsx +++ b/src/components/library/UpdateChecker.tsx @@ -45,7 +45,7 @@ const calcProgress = (status: UpdaterSubscription['updateStatusChanged'] | undef return Number.isNaN(progress) ? 0 : progress; }; -function UpdateChecker() { +function UpdateChecker({ handleFinishedUpdate }: { handleFinishedUpdate: () => void }) { const { t } = useTranslation(); const { data: updaterData } = requestManager.useUpdaterSubscription(); @@ -62,6 +62,11 @@ function UpdateChecker() { ], ); + const isUpdateFinished = progress === 100; + if (isUpdateFinished) { + handleFinishedUpdate(); + } + const onClick = async () => { try { await requestManager.startGlobalUpdate().response; diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx index 69abf12a..dc13bbe3 100644 --- a/src/screens/Library.tsx +++ b/src/screens/Library.tsx @@ -7,7 +7,7 @@ */ import { Chip, Tab, Tabs, styled, Box } from '@mui/material'; -import React, { useContext, useEffect, useMemo } from 'react'; +import React, { useCallback, useContext, useEffect, useMemo } from 'react'; import { useQueryParam, NumberParam } from 'use-query-params'; import { useTranslation } from 'react-i18next'; import requestManager from '@/lib/requests/RequestManager.ts'; @@ -66,6 +66,7 @@ export default function Library() { data: categoriesResponse, error: tabsError, loading: areCategoriesLoading, + refetch, } = requestManager.useGetCategories(); const tabsData = categoriesResponse?.categories.nodes.filter( (category) => category.id !== 0 || (category.id === 0 && category.mangas.totalCount), @@ -86,6 +87,10 @@ export default function Library() { } = requestManager.useGetCategoryMangas(activeTab?.id, { skip: !activeTab, nextFetchPolicy: 'cache-only' }); const mangas = categoryMangaResponse?.mangas.nodes ?? []; + const handleFinishedUpdate = useCallback(() => { + refetch(); + }, [refetch]); + const { setTitle, setAction } = useContext(NavbarContext); useEffect(() => { const title = t('library.title'); @@ -100,7 +105,7 @@ export default function Library() { <> - + , ); return () => {