diff --git a/src/screens/novel/NovelScreen.js b/src/screens/novel/NovelScreen.js index 1317e1ae..32b8e1f3 100644 --- a/src/screens/novel/NovelScreen.js +++ b/src/screens/novel/NovelScreen.js @@ -695,7 +695,6 @@ const Novel = ({ route, navigation }) => { showJumpToChapterModal(false)} - theme={theme} chapters={chapters} novel={novel} chapterListRef={flatlistRef.current} diff --git a/src/screens/novel/components/JumpToChapterModal.js b/src/screens/novel/components/JumpToChapterModal.js index 6aa2621b..0afb9a7b 100644 --- a/src/screens/novel/components/JumpToChapterModal.js +++ b/src/screens/novel/components/JumpToChapterModal.js @@ -1,22 +1,16 @@ import { FlashList } from '@shopify/flash-list'; -import { openChapter } from '@utils/handleNavigateParams'; -import { getDialogBackground } from '@theme/colors'; +import { dividerColor, getDialogBackground } from '@theme/colors'; import React, { useState } from 'react'; -import { StyleSheet, View } from 'react-native'; -import color from 'color'; +import { StyleSheet, View, Pressable } from 'react-native'; import { getString } from '@strings/translations'; +import { Button } from '@components'; +import color from 'color'; -import { - Modal, - Portal, - Switch, - TextInput, - TouchableRipple, - Text, -} from 'react-native-paper'; +import { Modal, Portal, Switch, TextInput, Text } from 'react-native-paper'; +import { useTheme } from '@hooks/useTheme'; +import { ButtonVariation } from '@components/Button/Button'; const JumpToChapterModal = ({ - theme, hideModal, modalVisible, chapters, @@ -24,6 +18,8 @@ const JumpToChapterModal = ({ novel, chapterListRef, }) => { + const theme = useTheme(); + const [mode, setMode] = useState(false); const [openChapter, setOpenChapter] = useState(false); @@ -36,8 +32,6 @@ const JumpToChapterModal = ({ setText(); setError(); setResult([]); - setMode(false); - setOpenChapter(false); }; const navigateToChapter = chap => { onDismiss(); @@ -81,24 +75,29 @@ const JumpToChapterModal = ({ const renderItem = ({ item }) => { return ( - executeFunction(item)} - style={[styles.listElementContainer]} + style={styles.listElementContainer} > - + {item.chapterName} - + {item.releaseDate && ( + + {item.releaseDate} + + )} + ); }; const onSubmit = () => { if (!mode) { - if (text > 0 && text <= chapters.length) { + if (Number(text) && text > 0 && text <= chapters.length) { if (openChapter) { return navigateToChapter(chapters[text - 1]); } @@ -108,28 +107,27 @@ const JumpToChapterModal = ({ getString('novelScreen.jumpToChapterModal.error.validChapterNumber') + ` (${text <= 0 ? '≤ 0' : '≤ ' + chapters.length})`, ); - } - const chapter = chapters.filter(chap => { - if (chap.chapterName.toLowerCase().includes(text.toLowerCase())) { - return chap; + } else { + const chapter = chapters.filter(chap => + chap.chapterName.toLowerCase().includes(text?.toLowerCase()), + ); + + if (!chapter.length) { + setError( + getString('novelScreen.jumpToChapterModal.error.validChapterName'), + ); + return; } - }); - if (chapter?.[0] && chapter.length !== chapters.length) { - setError(); + if (chapter.length === 1) { if (openChapter) { return navigateToChapter(chapter[0]); } return scrollToChapter(chapter[0]); } - if (openChapter) { - return setResult(chapter); - } + return setResult(chapter); } - setError( - getString('novelScreen.jumpToChapterModal.error.validChapterName'), - ); }; const onChangeText = txt => { @@ -137,6 +135,8 @@ const JumpToChapterModal = ({ setResult([]); }; + const errorColor = !theme.isDark ? '#B3261E' : '#F2B8B5'; + return ( - - {getString('novelScreen.jumpToChapterModal.jumpToChapter')} - - - {error} - - - {getString('novelScreen.jumpToChapterModal.openChapter')} + + + {getString('novelScreen.jumpToChapterModal.jumpToChapter')} - setOpenChapter(!openChapter)} - color={theme.primary} + + {error} + + + {getString('novelScreen.jumpToChapterModal.openChapter')} + + setOpenChapter(!openChapter)} + color={theme.primary} + /> + + + + {getString('novelScreen.jumpToChapterModal.chapterName')} + + setMode(!mode)} + color={theme.primary} + /> + - - - {getString('novelScreen.jumpToChapterModal.chapterName')} - - setMode(!mode)} - color={theme.primary} + {result.length ? ( + + + + ) : null} + +