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