From 9674b18d28489e69375356fc8711167148949a65 Mon Sep 17 00:00:00 2001
From: schroda <50052685+schroda@users.noreply.github.com>
Date: Mon, 1 Apr 2024 00:45:44 +0200
Subject: [PATCH] Feature/tracking unbind use new mutation (#688)
* [Codegen] Update generated files
* Use new "unbindTrack" mutation
* Add option to delete remote track on unbind
* [VersionMapping] Require server version "r1510" for preview
---
src/components/tracker/TrackerActiveCard.tsx | 28 +++---
src/i18n/locale/en.json | 1 +
src/lib/graphql/Fragments.ts | 1 +
src/lib/graphql/generated/apollo-helpers.ts | 38 +++++++-
src/lib/graphql/generated/graphql.ts | 91 ++++++++++++++++----
src/lib/graphql/mutations/TrackerMutation.ts | 19 ++++
src/lib/requests/RequestManager.ts | 23 +++--
versionToServerVersionMapping.json | 2 +-
8 files changed, 165 insertions(+), 38 deletions(-)
diff --git a/src/components/tracker/TrackerActiveCard.tsx b/src/components/tracker/TrackerActiveCard.tsx
index c360bffb..c15d856b 100644
--- a/src/components/tracker/TrackerActiveCard.tsx
+++ b/src/components/tracker/TrackerActiveCard.tsx
@@ -18,6 +18,7 @@ import {
DialogContent,
DialogTitle,
Divider,
+ FormGroup,
IconButton,
Link,
ListItemButton,
@@ -28,7 +29,7 @@ import {
} from '@mui/material';
import MoreVertIcon from '@mui/icons-material/MoreVert';
import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup-state';
-import { useMemo } from 'react';
+import { useMemo, useState } from 'react';
import { requestManager } from '@/lib/requests/RequestManager.ts';
import { Trackers, TTrackRecord, UNSET_DATE } from '@/lib/data/Trackers.ts';
import { ListPreference } from '@/components/sourceConfiguration/ListPreference.tsx';
@@ -39,6 +40,7 @@ import { Menu } from '@/components/menu/Menu';
import { CARD_STYLING } from '@/components/tracker/constants.ts';
import { TypographyMaxLines } from '@/components/atoms/TypographyMaxLines.tsx';
import { SelectSetting, SelectSettingValue } from '@/components/settings/SelectSetting.tsx';
+import { CheckboxInput } from '@/components/atoms/CheckboxInput';
const TrackerActiveLink = ({ children, url }: { children: React.ReactNode; url: string }) => (
@@ -57,13 +59,12 @@ const TrackerActiveRemoveBind = ({
}) => {
const { t } = useTranslation();
- // TODO - enable once server supports removing track binding on tracker source
- // const [removeRemoteTracking, setRemoveRemoteTracking] = useState(false);
+ const [removeRemoteTracking, setRemoveRemoteTracking] = useState(false);
const removeBind = () => {
onClose();
requestManager
- .updateTrackerBind(trackRecord.id, { unbind: true })
+ .unbindTracker(trackRecord.id, removeRemoteTracking)
.response.then(() => makeToast(t('manga.action.track.remove.label.success'), 'success'))
.catch(() => makeToast(t('manga.action.track.remove.label.error'), 'error'));
};
@@ -97,15 +98,16 @@ const TrackerActiveRemoveBind = ({
{t('manga.action.track.remove.dialog.label.description')}
- {/* TODO - enable once server supports removing track binding on tracker source */}
- {/* */}
- {/* setRemoveRemoteTracking(checked)} */}
- {/* /> */}
- {/* */}
+ {tracker.supportsTrackDeletion && (
+
+ setRemoveRemoteTracking(checked)}
+ />
+
+ )}