= props => {
case 'stop-speak':
Speech.stop();
break;
- case 'copy':
- if (event.data && typeof event.data === 'string') {
- Clipboard.setStringAsync(event.data).then(() => {
- showToast(getString('common.copiedToClipboard', { name: '' }));
- });
- }
- break;
}
}}
source={{
- baseUrl: plugin?.site,
+ baseUrl: !chapter.isDownloaded ? plugin?.site : undefined,
headers: plugin?.imageRequestInit?.headers,
method: plugin?.imageRequestInit?.method,
body: plugin?.imageRequestInit?.body,
html: `
-
-
-
-
-
- ${
- pageReader
- ? `
-
- `
- : ''
- }
-
-
-
-
-
-
-
- ${html}
-
-
-
-
![]()
-
-
-
- ${
- !pageReader
- ? `
-
- ${getString(
- 'readerScreen.finished',
- )}: ${chapter.name.trim()}
-
- ${
- nextChapter
- ? ``
- : `
- ${getString('readerScreen.noNextChapter')}
-
`
- }`
- : ''
- }
-
-
-
-
-
-
-
-
-
-
-
- `,
+
+
+
+
+
+
+
+
+
+
+
+ ${html}
+
+
+
+
+
+
+
+
+
+
+
+
+ `,
}}
/>
);
diff --git a/src/screens/reader/hooks/useChapter.ts b/src/screens/reader/hooks/useChapter.ts
index dfdae5a1..5807aa69 100644
--- a/src/screens/reader/hooks/useChapter.ts
+++ b/src/screens/reader/hooks/useChapter.ts
@@ -40,13 +40,8 @@ export default function useChapter(webViewRef: RefObject) {
const [[nextChapter, prevChapter], setAdjacentChapter] = useState<
ChapterInfo[]
>([]);
- const {
- autoScroll,
- autoScrollInterval,
- autoScrollOffset,
- useVolumeButtons,
- removeExtraParagraphSpacing,
- } = useChapterGeneralSettings();
+ const { autoScroll, autoScrollInterval, autoScrollOffset, useVolumeButtons } =
+ useChapterGeneralSettings();
const { incognitoMode } = useLibrarySettings();
const [error, setError] = useState();
const { tracker } = useTracker();
@@ -102,11 +97,7 @@ export default function useChapter(webViewRef: RefObject) {
})
.catch(e => setError(e.message));
}
- setChapterText(
- sanitizeChapterText(text, {
- removeExtraParagraphSpacing,
- }),
- );
+ setChapterText(sanitizeChapterText(text));
const [nextChap, prevChap] = await Promise.all([
getNextChapter(chapter.novelId, chapter.id),
getPrevChapter(chapter.novelId, chapter.id),
@@ -161,10 +152,10 @@ export default function useChapter(webViewRef: RefObject) {
const hideHeader = () => {
if (!hidden) {
- webViewRef.current?.injectJavaScript('toolWrapper.hide()');
+ webViewRef.current?.injectJavaScript('reader.hidden.val = true');
setImmersiveMode();
} else {
- webViewRef.current?.injectJavaScript('toolWrapper.show()');
+ webViewRef.current?.injectJavaScript('reader.hidden.val = false');
showStatusAndNavBar();
}
setHidden(!hidden);
diff --git a/src/screens/reader/utils/sanitizeChapterText.ts b/src/screens/reader/utils/sanitizeChapterText.ts
index cd8cda20..a6783404 100644
--- a/src/screens/reader/utils/sanitizeChapterText.ts
+++ b/src/screens/reader/utils/sanitizeChapterText.ts
@@ -1,14 +1,7 @@
import { getString } from '@strings/translations';
import sanitizeHtml from 'sanitize-html';
-interface Options {
- removeExtraParagraphSpacing?: boolean;
-}
-
-export const sanitizeChapterText = (
- html: string,
- options?: Options,
-): string => {
+export const sanitizeChapterText = (html: string): string => {
let text = sanitizeHtml(html, {
allowedTags: sanitizeHtml.defaults.allowedTags.concat([
'img',
@@ -30,12 +23,5 @@ export const sanitizeChapterText = (
},
allowedSchemes: ['data', 'http', 'https', 'file'],
});
- if (text) {
- if (options?.removeExtraParagraphSpacing) {
- text = text.replace(/<\s*br[^>]*>/gi, '\n').replace(/\n{2,}/g, '\n\n');
- }
- } else {
- text = getString('readerScreen.emptyChapterMessage');
- }
- return text;
+ return text || getString('readerScreen.emptyChapterMessage');
};
diff --git a/src/screens/settings/SettingsReaderScreen/Settings/GeneralSettings.tsx b/src/screens/settings/SettingsReaderScreen/Settings/GeneralSettings.tsx
index 95b310ae..1e8b7e76 100644
--- a/src/screens/settings/SettingsReaderScreen/Settings/GeneralSettings.tsx
+++ b/src/screens/settings/SettingsReaderScreen/Settings/GeneralSettings.tsx
@@ -28,6 +28,7 @@ const GeneralSettings: React.FC = () => {
autoScrollInterval = 10,
autoScrollOffset = null,
bionicReading = false,
+ tapToScroll = false,
setChapterGeneralSettings,
} = useChapterGeneralSettings();
@@ -83,6 +84,12 @@ const GeneralSettings: React.FC = () => {
}
theme={theme}
/>
+ setChapterGeneralSettings({ tapToScroll: !tapToScroll })}
+ theme={theme}
+ />
{
labelStyle={labelStyle}
label={getString('readerScreen.bottomSheet.padding')}
valueKey="padding"
- valueChange={0.5}
- max={10}
+ valueChange={2}
+ min={0}
+ max={50}
+ decimals={0}
+ unit="px"
/>
Text to Speech
-
-
-
-
- Voice rate
-
-
- setChapterReaderSettings({ tts: { ...tts, rate: value } })
- }
- />
-
- Voice pitch
-
-
- setChapterReaderSettings({ tts: { ...tts, pitch: value } })
- }
- />
-
+ {TTSEnable ? (
+ <>
+
+
+
+ Voice rate
+
+
+ setChapterReaderSettings({ tts: { ...tts, rate: value } })
+ }
+ />
+
+ Voice pitch
+
+
+ setChapterReaderSettings({ tts: { ...tts, pitch: value } })
+ }
+ />
+
+ >
+ ) : null}
{
'updatedTime': null,
};
const [hidden, setHidden] = useState(true);
- const layoutHeight = Dimensions.get('window').height;
const batteryLevel = useBatteryLevel();
const readerSettings = useChapterReaderSettings();
- const {
- showScrollPercentage,
- showBatteryAndTime,
- verticalSeekbar,
- bionicReading,
- pageReader,
- } = useChapterGeneralSettings();
+ const chapterGeneralSettings = useChapterGeneralSettings();
const READER_HEIGHT = 280;
const assetsUriPrefix = useMemo(
() => (__DEV__ ? 'http://localhost:8081/assets' : 'file:///android_asset'),
[],
);
- const dummyChapterInfo = {
- sourceId: 11,
- chapterId: 99,
- novelId: 20,
- novelName: 'novel name',
- chapterName: "chapter' name",
- };
const webViewCSS = `
-
-
-
+
+
`;
const readerBackgroundColor = readerSettings.theme;
@@ -168,9 +153,13 @@ const SettingsReaderScreen = () => {
switch (event.type) {
case 'hide':
if (hidden) {
- webViewRef.current?.injectJavaScript('toolWrapper.show()');
+ webViewRef.current?.injectJavaScript(
+ 'reader.hidden.val = true',
+ );
} else {
- webViewRef.current?.injectJavaScript('toolWrapper.hide()');
+ webViewRef.current?.injectJavaScript(
+ 'reader.hidden.val = false',
+ );
}
setHidden(!hidden);
break;
@@ -191,15 +180,6 @@ const SettingsReaderScreen = () => {
case 'stop-speak':
Speech.stop();
break;
- case 'copy':
- if (event.data && typeof event.data === 'string') {
- Clipboard.setStringAsync(event.data).then(() => {
- showToast(
- getString('common.copiedToClipboard', { name: '' }),
- );
- });
- }
- break;
}
}}
source={{
@@ -208,63 +188,44 @@ const SettingsReaderScreen = () => {
${webViewCSS}
-
- ${
- pageReader
- ? `
-
- `
- : ''
- }
-
-
-
-
- ${dummyHTML}
-
+
+
+ ${dummyHTML}
-
-
-
![]()
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+