Add setting to disable tracking update while reading
This commit is contained in:
@@ -45,6 +45,9 @@ const GLOBAL_METADATA_KEYS: AppMetadataKeys[] = [
|
||||
|
||||
// browse
|
||||
'hideLibraryEntries',
|
||||
|
||||
// tracking
|
||||
'updateProgressAfterReading',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -41,6 +41,9 @@ export const getDefaultSettings = (): MetadataServerSettings => ({
|
||||
|
||||
// browse
|
||||
hideLibraryEntries: false,
|
||||
|
||||
// tracking
|
||||
updateProgressAfterReading: true,
|
||||
});
|
||||
|
||||
export const convertSettingsToMetadata = (
|
||||
|
||||
@@ -253,7 +253,10 @@ export function Reader() {
|
||||
.updateChapter(chapter.id, {
|
||||
...patch,
|
||||
chapterIdToDelete: getChapterIdToDelete(),
|
||||
trackProgressMangaId: patch.isRead && manga.trackRecords.totalCount ? manga.id : undefined,
|
||||
trackProgressMangaId:
|
||||
metadataSettings.updateProgressAfterReading && patch.isRead && manga.trackRecords.totalCount
|
||||
? manga.id
|
||||
: undefined,
|
||||
})
|
||||
.response.catch();
|
||||
};
|
||||
|
||||
@@ -11,11 +11,20 @@ import { useContext, useEffect } from 'react';
|
||||
import List from '@mui/material/List';
|
||||
|
||||
import ListSubheader from '@mui/material/ListSubheader';
|
||||
import ListItem from '@mui/material/ListItem';
|
||||
import ListItemText from '@mui/material/ListItemText';
|
||||
import Switch from '@mui/material/Switch';
|
||||
import { NavBarContext } from '@/components/context/NavbarContext.tsx';
|
||||
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
||||
import { EmptyView } from '@/components/util/EmptyView.tsx';
|
||||
import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx';
|
||||
import { SettingsTrackerCard } from '@/components/tracker/SettingsTrackerCard.tsx';
|
||||
import {
|
||||
createUpdateMetadataServerSettings,
|
||||
useMetadataServerSettings,
|
||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
||||
import { MetadataTrackingSettings } from '@/typings.ts';
|
||||
import { makeToast } from '@/components/util/Toast.tsx';
|
||||
|
||||
export const TrackingSettings = () => {
|
||||
const { t } = useTranslation();
|
||||
@@ -25,6 +34,13 @@ export const TrackingSettings = () => {
|
||||
setTitle(t('tracking.settings.title.settings'));
|
||||
}, [t]);
|
||||
|
||||
const {
|
||||
settings: { updateProgressAfterReading },
|
||||
} = useMetadataServerSettings();
|
||||
const updateTrackingSettings = createUpdateMetadataServerSettings<keyof MetadataTrackingSettings>(() =>
|
||||
makeToast(t('global.error.label.failed_to_save_changes'), 'error'),
|
||||
);
|
||||
|
||||
const { data, loading, error } = requestManager.useGetTrackerList();
|
||||
const trackers = data?.trackers.nodes ?? [];
|
||||
|
||||
@@ -37,16 +53,28 @@ export const TrackingSettings = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<List
|
||||
subheader={
|
||||
<ListSubheader component="div" id="tracking-trackers">
|
||||
{t('tracking.settings.title.trackers')}
|
||||
</ListSubheader>
|
||||
}
|
||||
>
|
||||
{trackers.map((tracker) => (
|
||||
<SettingsTrackerCard key={tracker.id} tracker={tracker} />
|
||||
))}
|
||||
</List>
|
||||
<>
|
||||
<List>
|
||||
<ListItem>
|
||||
<ListItemText primary={t('tracking.settings.label.update_progress_reading')} />
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={updateProgressAfterReading}
|
||||
onChange={(e) => updateTrackingSettings('updateProgressAfterReading', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
</List>
|
||||
<List
|
||||
subheader={
|
||||
<ListSubheader component="div" id="tracking-trackers">
|
||||
{t('tracking.settings.title.trackers')}
|
||||
</ListSubheader>
|
||||
}
|
||||
>
|
||||
{trackers.map((tracker) => (
|
||||
<SettingsTrackerCard key={tracker.id} tracker={tracker} />
|
||||
))}
|
||||
</List>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -249,11 +249,16 @@ export type MetadataBrowseSettings = {
|
||||
hideLibraryEntries: boolean;
|
||||
};
|
||||
|
||||
export type MetadataTrackingSettings = {
|
||||
updateProgressAfterReading: boolean;
|
||||
};
|
||||
|
||||
export type MetadataServerSettings = MetadataDownloadSettings &
|
||||
MetadataLibrarySettings &
|
||||
MetadataClientSettings &
|
||||
MetadataMigrationSettings &
|
||||
MetadataBrowseSettings;
|
||||
MetadataBrowseSettings &
|
||||
MetadataTrackingSettings;
|
||||
|
||||
export interface ISearchSettings {
|
||||
ignoreFilters: boolean;
|
||||
|
||||
Reference in New Issue
Block a user