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 () => {