From 762945497b1d90e6b9be16b3472773ee4b6e7327 Mon Sep 17 00:00:00 2001 From: nyagami Date: Sat, 16 Mar 2024 20:42:04 +0700 Subject: [PATCH] Fixes & Features (#1002) * stop loading even no chapters * edit artist * more detail reader settings --- android/app/src/main/assets/css/index.css | 11 +- src/hooks/persisted/useNovel.ts | 4 +- .../novel/components/EditInfoModal.tsx | 9 ++ .../SettingsReaderScreen.tsx | 139 +++++++++++++++--- .../settings/SettingsReaderScreen/utils.ts | 1 + 5 files changed, 139 insertions(+), 25 deletions(-) diff --git a/android/app/src/main/assets/css/index.css b/android/app/src/main/assets/css/index.css index 9b27fffa6..82ca1ceca 100644 --- a/android/app/src/main/assets/css/index.css +++ b/android/app/src/main/assets/css/index.css @@ -48,6 +48,10 @@ img { max-width: 100%; } +.hidden { + visibility: hidden; +} + .nextButton, .infoText { width: 100%; @@ -90,7 +94,8 @@ img { #ToolWrapper { position: fixed; - top: 25vh; + top: 50%; + transform: translateY(-50%); right: 5vw; transition: 150ms; } @@ -117,6 +122,7 @@ img { margin-top: 8px; width: 2.4rem; height: 45vh; + min-height: 200px; border-radius: 1.2rem; background-color: var(--theme-surface-0-9); touch-action: none; @@ -316,10 +322,9 @@ tts.highlight { display: flex; height: 100%; width: 100%; - max-width: max-content; - max-height: max-content; background-color: var(--theme-surface-0-9); align-items: center; + justify-content: center; overflow: scroll; } diff --git a/src/hooks/persisted/useNovel.ts b/src/hooks/persisted/useNovel.ts index df59a6f2f..211dfed6c 100644 --- a/src/hooks/persisted/useNovel.ts +++ b/src/hooks/persisted/useNovel.ts @@ -401,10 +401,8 @@ export const useNovel = (novelPath: string, pluginId: string) => { ); } setChapters(chapters); - if (loading) { - setLoading(false); - } } + setLoading(false); }, [novel, novelSettings, pageIndex]); useEffect(() => { getNovel(); diff --git a/src/screens/novel/components/EditInfoModal.tsx b/src/screens/novel/components/EditInfoModal.tsx index b348f9e5a..d3debe7c9 100644 --- a/src/screens/novel/components/EditInfoModal.tsx +++ b/src/screens/novel/components/EditInfoModal.tsx @@ -130,6 +130,15 @@ const EditInfoModal = ({ onChangeText={text => setNovel({ ...novel, author: text })} dense /> + setNovel({ ...novel, artist: text })} + dense + /> { const theme = useTheme(); const navigation = useNavigation(); + const webViewRef = useRef(null); const { bottom } = useSafeAreaInsets(); - + const [hidden, setHidden] = useState(true); + const layoutHeight = Dimensions.get('window').height; + const batteryLevel = useBatteryLevel(); const readerSettings = useChapterReaderSettings(); + const { showScrollPercentage, showBatteryAndTime } = + useChapterGeneralSettings(); const READER_HEIGHT = 280; + const assetsUriPrefix = useMemo( + () => (__DEV__ ? 'http://localhost:8081/assets' : 'file:///android_asset'), + [], + ); const dummyChapterInfo = { sourceId: 11, chapterId: 99, @@ -41,24 +64,38 @@ const SettingsReaderScreen = () => { }; const webViewCSS = ` - + + `; @@ -75,23 +112,88 @@ const SettingsReaderScreen = () => { { + const event: WebViewPostEvent = JSON.parse(ev.nativeEvent.data); + switch (event.type) { + case 'hide': + if (hidden) { + webViewRef.current?.injectJavaScript('toolWrapper.show()'); + } else { + webViewRef.current?.injectJavaScript('toolWrapper.hide()'); + } + setHidden(!hidden); + break; + case 'speak': + if (event.data && typeof event.data === 'string') { + Speech.speak(event.data, { + onDone() { + webViewRef.current?.injectJavaScript('tts.next?.()'); + }, + }); + } + break; + 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={{ html: ` ${webViewCSS} + ${dummyHTML} + +
+ +
+ + + - `, }} diff --git a/src/screens/settings/SettingsReaderScreen/utils.ts b/src/screens/settings/SettingsReaderScreen/utils.ts index d1362791e..cc234e0c2 100644 --- a/src/screens/settings/SettingsReaderScreen/utils.ts +++ b/src/screens/settings/SettingsReaderScreen/utils.ts @@ -1,6 +1,7 @@ export const dummyHTML = `

Lorem ipsum dolor sit amet consectetuer adipiscing elit

+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa strong. Cum sociis natoque penatibus