From fd8fb367bd8223a67e46911d69367f6421eb7ae1 Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Sun, 31 Oct 2021 15:17:16 +0530 Subject: [PATCH] Allow setting default sort order for chapters (Closes #100) --- src/redux/settings/settings.reducer.js | 1 + src/screens/novel/NovelScreen.js | 9 ++- .../novel/components/JumpToChapterModal.js | 2 +- src/screens/setting/SettingsGeneralScreen.js | 23 +++++++ .../components/DefaultChapterSortModal.js | 61 +++++++++++++++++++ 5 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 src/screens/setting/components/DefaultChapterSortModal.js diff --git a/src/redux/settings/settings.reducer.js b/src/redux/settings/settings.reducer.js index f6af4b18..e538fa91 100644 --- a/src/redux/settings/settings.reducer.js +++ b/src/redux/settings/settings.reducer.js @@ -99,6 +99,7 @@ const initialState = { */ hideBackdrop: false, + defaultChapterSort: null, /** * Reader settings diff --git a/src/screens/novel/NovelScreen.js b/src/screens/novel/NovelScreen.js index c174f2fa..89efa7cb 100644 --- a/src/screens/novel/NovelScreen.js +++ b/src/screens/novel/NovelScreen.js @@ -77,15 +77,18 @@ const Novel = ({route, navigation}) => { const deleteDownloadsSnackbar = useModal(); const { - sort = 'ORDER BY chapterId ASC', + useFabForContinueReading = false, + defaultChapterSort = 'ORDER BY chapterId ASC', + } = useSettings(); + + const { + sort = defaultChapterSort, filter = '', showChapterTitles = false, } = usePreferences(novel.novelId); let {lastReadChapter, position} = useContinueReading(chapters, novel.novelId); - const {useFabForContinueReading = lastReadChapter && false} = useSettings(); - useEffect(() => { dispatch( getNovelAction(followed, sourceId, novelUrl, novelId, sort, filter), diff --git a/src/screens/novel/components/JumpToChapterModal.js b/src/screens/novel/components/JumpToChapterModal.js index 9bb7bfd8..f54ed675 100644 --- a/src/screens/novel/components/JumpToChapterModal.js +++ b/src/screens/novel/components/JumpToChapterModal.js @@ -89,7 +89,7 @@ const JumpToChapterModal = ({ { const theme = useTheme(); @@ -27,6 +28,7 @@ const GenralSettings = ({navigation}) => { updateLibraryOnLaunch = false, downloadNewChapters = false, onlyUpdateOngoingNovels = false, + defaultChapterSort = 'ORDER BY chapterId ASC', } = useSettings(); const {showLastUpdateTime = true} = useSelector( @@ -54,6 +56,8 @@ const GenralSettings = ({navigation}) => { */ const gridSizeModalRef = useModal(); + const defaultChapterSortModal = useModal(); + return ( @@ -85,6 +89,18 @@ const GenralSettings = ({navigation}) => { theme={theme} /> + Novel + + Global update { dispatch={dispatch} theme={theme} /> + { + return ( + + + + defaultChapterSort === 'ORDER BY chapterId ASC' + ? dispatch( + setAppSettings( + 'defaultChapterSort', + 'ORDER BY chapterId DESC', + ), + ) + : dispatch( + setAppSettings( + 'defaultChapterSort', + 'ORDER BY chapterId ASC', + ), + ) + } + /> + + + ); +}; + +export default DefaultChapterSortModal; + +const styles = StyleSheet.create({ + containerStyle: { + paddingVertical: 20, + margin: 20, + borderRadius: 6, + }, +});