[skip ci] Feat: Add OPDS Configs to Server Settings tab (#945)
* Add OPDS config settings * Address PR comments * Update serverVersion for PREVIEW * Add "opdsUseBinaryFileSizes" setting --------- Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
This commit is contained in:
@@ -32,6 +32,7 @@ import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.t
|
||||
import { ServerSettings as GqlServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
||||
import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts';
|
||||
import { SortOrder } from '@/lib/graphql/generated/graphql';
|
||||
|
||||
type ServerSettingsType = Pick<
|
||||
GqlServerSettings,
|
||||
@@ -57,6 +58,13 @@ type ServerSettingsType = Pick<
|
||||
| 'flareSolverrSessionName'
|
||||
| 'flareSolverrSessionTtl'
|
||||
| 'flareSolverrAsResponseFallback'
|
||||
| 'opdsUseBinaryFileSizes'
|
||||
| 'opdsItemsPerPage'
|
||||
| 'opdsEnablePageReadProgress'
|
||||
| 'opdsMarkAsReadOnDownload'
|
||||
| 'opdsShowOnlyUnreadChapters'
|
||||
| 'opdsShowOnlyDownloadedChapters'
|
||||
| 'opdsChapterSortOrder'
|
||||
>;
|
||||
|
||||
const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType => ({
|
||||
@@ -82,6 +90,13 @@ const extractServerSettings = (settings: GqlServerSettings): ServerSettingsType
|
||||
flareSolverrSessionName: settings.flareSolverrSessionName,
|
||||
flareSolverrSessionTtl: settings.flareSolverrSessionTtl,
|
||||
flareSolverrAsResponseFallback: settings.flareSolverrAsResponseFallback,
|
||||
opdsUseBinaryFileSizes: settings.opdsUseBinaryFileSizes,
|
||||
opdsItemsPerPage: settings.opdsItemsPerPage,
|
||||
opdsEnablePageReadProgress: settings.opdsEnablePageReadProgress,
|
||||
opdsMarkAsReadOnDownload: settings.opdsMarkAsReadOnDownload,
|
||||
opdsShowOnlyUnreadChapters: settings.opdsShowOnlyUnreadChapters,
|
||||
opdsShowOnlyDownloadedChapters: settings.opdsShowOnlyDownloadedChapters,
|
||||
opdsChapterSortOrder: settings.opdsChapterSortOrder,
|
||||
});
|
||||
|
||||
const getLogFilesCleanupDisplayValue = (ttl: number): string => {
|
||||
@@ -430,6 +445,92 @@ export const ServerSettings = () => {
|
||||
handleChange={(maxLogFolderSize) => updateSetting('maxLogFolderSize', maxLogFolderSize)}
|
||||
/>
|
||||
</List>
|
||||
<List
|
||||
subheader={
|
||||
<ListSubheader component="div" id="server-settings-opds">
|
||||
{t('settings.server.opds.title')}
|
||||
</ListSubheader>
|
||||
}
|
||||
>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.opds.binary_file_sizes.label.title')}
|
||||
secondary={t('settings.server.opds.binary_file_sizes.label.description')}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={serverSettings.opdsUseBinaryFileSizes}
|
||||
onChange={(e) => updateSetting('opdsUseBinaryFileSizes', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<NumberSetting
|
||||
settingTitle={t('settings.server.opds.items_per_page.label.title')}
|
||||
settingValue={serverSettings.opdsItemsPerPage.toString()}
|
||||
dialogDescription={t('settings.server.opds.items_per_page.label.description')}
|
||||
value={serverSettings.opdsItemsPerPage}
|
||||
defaultValue={50}
|
||||
minValue={10}
|
||||
maxValue={5000}
|
||||
stepSize={10}
|
||||
showSlider
|
||||
valueUnit={t('settings.server.opds.items_per_page.label.unit_other')}
|
||||
handleUpdate={(value) => updateSetting('opdsItemsPerPage', value)}
|
||||
/>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.opds.enable_page_read_progress.label.title')}
|
||||
secondary={t('settings.server.opds.enable_page_read_progress.label.description')}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={serverSettings.opdsEnablePageReadProgress}
|
||||
onChange={(e) => updateSetting('opdsEnablePageReadProgress', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.opds.mark_as_read_on_download.label.title')}
|
||||
secondary={t('settings.server.opds.mark_as_read_on_download.label.description')}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={serverSettings.opdsMarkAsReadOnDownload}
|
||||
onChange={(e) => updateSetting('opdsMarkAsReadOnDownload', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.opds.show_only_unread_chapters.label.title')}
|
||||
secondary={t('settings.server.opds.show_only_unread_chapters.label.description')}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={serverSettings.opdsShowOnlyUnreadChapters}
|
||||
onChange={(e) => updateSetting('opdsShowOnlyUnreadChapters', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<ListItem>
|
||||
<ListItemText
|
||||
primary={t('settings.server.opds.show_only_downloaded_chapters.label.title')}
|
||||
secondary={t('settings.server.opds.show_only_downloaded_chapters.label.description')}
|
||||
/>
|
||||
<Switch
|
||||
edge="end"
|
||||
checked={serverSettings.opdsShowOnlyDownloadedChapters}
|
||||
onChange={(e) => updateSetting('opdsShowOnlyDownloadedChapters', e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
<SelectSetting<SortOrder>
|
||||
settingName={t('settings.server.opds.chapter_sort_order.label.title')}
|
||||
dialogDescription={t('settings.server.opds.chapter_sort_order.label.description')}
|
||||
value={serverSettings.opdsChapterSortOrder}
|
||||
values={[
|
||||
[SortOrder.Asc, { text: t('global.sort.label.asc') }],
|
||||
[SortOrder.Desc, { text: t('global.sort.label.desc') }],
|
||||
]}
|
||||
handleChange={(value) => updateSetting('opdsChapterSortOrder', value)}
|
||||
/>
|
||||
</List>
|
||||
</List>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user