Show chapter title in Reader chapter select
This commit is contained in:
@@ -12,7 +12,7 @@ import KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';
|
|||||||
import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
|
import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
|
||||||
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
|
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
|
||||||
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
|
import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useMemo, useState } from 'react';
|
||||||
import Typography from '@mui/material/Typography';
|
import Typography from '@mui/material/Typography';
|
||||||
import { useLocation, useNavigate } from 'react-router-dom';
|
import { useLocation, useNavigate } from 'react-router-dom';
|
||||||
import Slide from '@mui/material/Slide';
|
import Slide from '@mui/material/Slide';
|
||||||
@@ -125,10 +125,12 @@ interface IProps {
|
|||||||
setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist?: boolean) => void;
|
setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist?: boolean) => void;
|
||||||
manga: TManga;
|
manga: TManga;
|
||||||
chapter: TChapter;
|
chapter: TChapter;
|
||||||
|
chapters: TChapter[];
|
||||||
curPage: number;
|
curPage: number;
|
||||||
scrollToPage: (page: number) => void;
|
scrollToPage: (page: number) => void;
|
||||||
openNextChapter: (offset: ChapterOffset) => void;
|
openNextChapter: (offset: ChapterOffset) => void;
|
||||||
retrievingNextChapter: boolean;
|
retrievingNextChapter: boolean;
|
||||||
|
hasDuplicatedChapters: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ReaderNavBar(props: IProps) {
|
export function ReaderNavBar(props: IProps) {
|
||||||
@@ -141,12 +143,25 @@ export function ReaderNavBar(props: IProps) {
|
|||||||
}>();
|
}>();
|
||||||
const { prevDrawerOpen, prevSettingsCollapseOpen } = location.state ?? {};
|
const { prevDrawerOpen, prevSettingsCollapseOpen } = location.state ?? {};
|
||||||
|
|
||||||
const { settings, setSettingValue, manga, chapter, curPage, scrollToPage, openNextChapter, retrievingNextChapter } =
|
const {
|
||||||
props;
|
settings,
|
||||||
|
setSettingValue,
|
||||||
|
manga,
|
||||||
|
chapter,
|
||||||
|
chapters,
|
||||||
|
curPage,
|
||||||
|
scrollToPage,
|
||||||
|
openNextChapter,
|
||||||
|
retrievingNextChapter,
|
||||||
|
hasDuplicatedChapters,
|
||||||
|
} = props;
|
||||||
|
|
||||||
const handleBack = useBackButton();
|
const handleBack = useBackButton();
|
||||||
useSetDefaultBackTo(`/manga/${manga.id}`);
|
useSetDefaultBackTo(`/manga/${manga.id}`);
|
||||||
|
|
||||||
|
const hasMultipleScanlators = useMemo(() => !!new Set(chapters.map(({ scanlator }) => scanlator)).size, [chapters]);
|
||||||
|
const chapterSelectShowScanlator = !hasDuplicatedChapters && hasMultipleScanlators;
|
||||||
|
|
||||||
const [drawerOpen, setDrawerOpen] = useState(settings.staticNav || prevDrawerOpen);
|
const [drawerOpen, setDrawerOpen] = useState(settings.staticNav || prevDrawerOpen);
|
||||||
const [updateDrawerOnRender, setUpdateDrawerOnRender] = useState(true);
|
const [updateDrawerOnRender, setUpdateDrawerOnRender] = useState(true);
|
||||||
const [hideOpenButton, setHideOpenButton] = useState(settings.staticNav || prevDrawerOpen);
|
const [hideOpenButton, setHideOpenButton] = useState(settings.staticNav || prevDrawerOpen);
|
||||||
@@ -338,12 +353,11 @@ export function ReaderNavBar(props: IProps) {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{Array(Math.max(0, manga.chapters.totalCount))
|
{chapters.map(({ id, sourceOrder, name, chapterNumber, scanlator }) => (
|
||||||
.fill(1)
|
<MenuItem
|
||||||
.map((ignoreValue, index) => (
|
key={id}
|
||||||
<MenuItem key={`Chapter#${index + 1}`} value={index + 1}>{`${t(
|
value={sourceOrder}
|
||||||
'chapter.title',
|
>{`#${chapterNumber}${chapterSelectShowScanlator && scanlator != null ? ` (${scanlator})` : ''} | ${name}`}</MenuItem>
|
||||||
)} ${index + 1}`}</MenuItem>
|
|
||||||
))}
|
))}
|
||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
|
|||||||
@@ -185,6 +185,11 @@ export function Reader() {
|
|||||||
|
|
||||||
const { settings: metadataSettings } = useMetadataServerSettings();
|
const { settings: metadataSettings } = useMetadataServerSettings();
|
||||||
|
|
||||||
|
const uniqueChapters = useMemo(
|
||||||
|
() =>
|
||||||
|
settings.skipDupChapters ? Chapters.removeDuplicates(chapter, mangaChapters ?? []) : mangaChapters ?? [],
|
||||||
|
[chapter, mangaChapters, settings.skipDupChapters],
|
||||||
|
);
|
||||||
const prevChapters = useMemo(
|
const prevChapters = useMemo(
|
||||||
() =>
|
() =>
|
||||||
Chapters.getNextChapters(chapter, mangaChapters ?? [], {
|
Chapters.getNextChapters(chapter, mangaChapters ?? [], {
|
||||||
@@ -380,17 +385,19 @@ export function Reader() {
|
|||||||
setSettingValue={setSettingValue}
|
setSettingValue={setSettingValue}
|
||||||
manga={manga}
|
manga={manga}
|
||||||
chapter={chapter}
|
chapter={chapter}
|
||||||
|
chapters={uniqueChapters}
|
||||||
curPage={curPage}
|
curPage={curPage}
|
||||||
scrollToPage={setPageToScrollTo}
|
scrollToPage={setPageToScrollTo}
|
||||||
openNextChapter={openNextChapter}
|
openNextChapter={openNextChapter}
|
||||||
retrievingNextChapter={retrievingNextChapter}
|
retrievingNextChapter={retrievingNextChapter}
|
||||||
|
hasDuplicatedChapters={settings.skipDupChapters && mangaChapters?.length !== uniqueChapters.length}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
// clean up for when we leave the reader
|
// clean up for when we leave the reader
|
||||||
return () => setOverride({ status: false, value: <div /> });
|
return () => setOverride({ status: false, value: <div /> });
|
||||||
}, [manga, chapter, settings, curPage, chapterIndex, retrievingNextChapter, openNextChapter]);
|
}, [manga, chapter, settings, curPage, chapterIndex, retrievingNextChapter, openNextChapter, uniqueChapters]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!wasLastPageReadSet) {
|
if (!wasLastPageReadSet) {
|
||||||
|
|||||||
Reference in New Issue
Block a user