|
|
|
@ -5,10 +5,11 @@ interface MangaPageProps {
|
|
|
|
imageUrl: string;
|
|
|
|
imageUrl: string;
|
|
|
|
referer: string;
|
|
|
|
referer: string;
|
|
|
|
fitMode: FitMode;
|
|
|
|
fitMode: FitMode;
|
|
|
|
|
|
|
|
allowUpscale?: boolean;
|
|
|
|
fetchImage: (url: string, referer: string) => Promise<string>;
|
|
|
|
fetchImage: (url: string, referer: string) => Promise<string>;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function MangaPage({ imageUrl, referer, fitMode, fetchImage }: MangaPageProps) {
|
|
|
|
export function MangaPage({ imageUrl, referer, fitMode, allowUpscale = true, fetchImage }: MangaPageProps) {
|
|
|
|
const [src, setSrc] = useState<string>('');
|
|
|
|
const [src, setSrc] = useState<string>('');
|
|
|
|
const [loading, setLoading] = useState(true);
|
|
|
|
const [loading, setLoading] = useState(true);
|
|
|
|
const [error, setError] = useState(false);
|
|
|
|
const [error, setError] = useState(false);
|
|
|
|
@ -44,6 +45,8 @@ export function MangaPage({ imageUrl, referer, fitMode, fetchImage }: MangaPageP
|
|
|
|
original: 'fit-original',
|
|
|
|
original: 'fit-original',
|
|
|
|
}[fitMode];
|
|
|
|
}[fitMode];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const upscaleClass = allowUpscale ? 'allow-upscale' : 'no-upscale';
|
|
|
|
|
|
|
|
|
|
|
|
if (loading) {
|
|
|
|
if (loading) {
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div className="page-placeholder">
|
|
|
|
<div className="page-placeholder">
|
|
|
|
@ -70,7 +73,7 @@ export function MangaPage({ imageUrl, referer, fitMode, fetchImage }: MangaPageP
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div className={`manga-page ${fitClass}`}>
|
|
|
|
<div className={`manga-page ${fitClass} ${upscaleClass}`}>
|
|
|
|
<img
|
|
|
|
<img
|
|
|
|
src={src}
|
|
|
|
src={src}
|
|
|
|
alt=""
|
|
|
|
alt=""
|
|
|
|
|