diff --git a/App.js b/App.js
index c1f6c40e..88be7239 100644
--- a/App.js
+++ b/App.js
@@ -1,21 +1,17 @@
-import React, { useState, useEffect } from "react";
-import { StatusBar } from "expo-status-bar";
+import React, { useEffect } from "react";
import { NavigationContainer } from "@react-navigation/native";
-import * as Font from "expo-font";
-import AppLoading from "expo-app-loading";
-
-import Router from "./src/navigation/Router";
+import { useFonts } from "expo-font";
+import { Provider as PaperProvider } from "react-native-paper";
+import Main from "./src/Navigators/Main";
// Redux
-import { Provider, useSelector } from "react-redux";
+import { Provider } from "react-redux";
import { persistor, store } from "./src/redux/store";
import { PersistGate } from "redux-persist/lib/integration/react";
import { createDB, deleteDb } from "./src/database/DBHelper";
-import { checkGithubRelease } from "./src/services/updates";
-import NewUpdateDialog from "./src/components/NewUpdateDialog";
-const getFonts = () =>
- Font.loadAsync({
+const App = () => {
+ const [loaded] = useFonts({
"pt-sans-bold": require("./assets/fonts/PTSansNarrow-Bold.ttf"),
"arbutus-slab": require("./assets/fonts/ArbutusSlab-Regular.ttf"),
domine: require("./assets/fonts/Domine-VariableFont_wght.ttf"),
@@ -25,31 +21,23 @@ const getFonts = () =>
"pt-serif": require("./assets/fonts/PTSerif-Regular.ttf"),
});
-const App = () => {
- const [fontsLoaded, setFontsLoaded] = useState(false);
-
useEffect(() => createDB(), []);
- if (fontsLoaded) {
- return (
-
-
-
-
-
-
-
-
- );
- } else {
- return (
- warn(error)}
- onFinish={() => setFontsLoaded(true)}
- />
- );
+ if (!loaded) {
+ return null;
}
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
};
export default App;
diff --git a/src/Hooks/setStatusBarStyle.js b/src/Hooks/setStatusBarStyle.js
new file mode 100644
index 00000000..e0b23880
--- /dev/null
+++ b/src/Hooks/setStatusBarStyle.js
@@ -0,0 +1,7 @@
+import { setStatusBarStyle as setExpoStatusBarStyle } from "expo-status-bar";
+import { useTheme } from "../Theme/hooks/useTheme";
+
+export const setStatusBarStyle = () => {
+ const theme = useTheme();
+ setExpoStatusBarStyle(theme.id === 1 ? "dark" : "light");
+};
diff --git a/src/Navigators/BottomNavigator.js b/src/Navigators/BottomNavigator.js
new file mode 100644
index 00000000..4b679fae
--- /dev/null
+++ b/src/Navigators/BottomNavigator.js
@@ -0,0 +1,92 @@
+import React from "react";
+import { createMaterialBottomTabNavigator } from "@react-navigation/material-bottom-tabs";
+import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
+import { useTheme } from "../Theme/hooks/useTheme";
+
+import Library from "../screens/Library/Library";
+import Updates from "../screens/Updates/Updates";
+import History from "../screens/History/History";
+import Browse from "../screens/Browse/Browse";
+import More from "../screens/More/More";
+
+const Tab = createMaterialBottomTabNavigator();
+
+const BottomNavigator = () => {
+ const theme = useTheme();
+
+ return (
+
+ (
+
+ ),
+ }}
+ />
+ (
+
+ ),
+ }}
+ />
+ (
+
+ ),
+ }}
+ />
+ (
+
+ ),
+ }}
+ />
+ (
+
+ ),
+ }}
+ />
+
+ );
+};
+
+export default BottomNavigator;
diff --git a/src/Navigators/Main.js b/src/Navigators/Main.js
new file mode 100644
index 00000000..eccb3eb9
--- /dev/null
+++ b/src/Navigators/Main.js
@@ -0,0 +1,64 @@
+import React, { useEffect, useState } from "react";
+import {
+ createStackNavigator,
+ TransitionPresets,
+} from "@react-navigation/stack";
+
+import BottomNavigator from "./BottomNavigator";
+import Novel from "../screens/Novel/Novel";
+import Chapter from "../screens/Chapter/Chapter";
+import Extension from "../screens/Extension/Extension";
+import MoreStack from "./More";
+
+import { setStatusBarStyle } from "../Hooks/setStatusBarStyle";
+import { checkGithubRelease } from "../Services/updates";
+
+const Stack = createStackNavigator();
+
+const stackNavigatorConfig = {
+ headerShown: false,
+ ...TransitionPresets.RevealFromBottomAndroid,
+};
+
+const MainNavigator = () => {
+ const [newUpdate, setNewUpdate] = useState();
+ setStatusBarStyle();
+
+ useEffect(() => {
+ checkGithubRelease().then((res) => setNewUpdate(res));
+ }, []);
+
+ return (
+ <>
+ {newUpdate && newUpdate.tag_name === "v1.0.17" && (
+
+ )}
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default MainNavigator;
diff --git a/src/Navigators/More.js b/src/Navigators/More.js
new file mode 100644
index 00000000..b99662d5
--- /dev/null
+++ b/src/Navigators/More.js
@@ -0,0 +1,28 @@
+import React from "react";
+import {
+ createStackNavigator,
+ TransitionPresets,
+} from "@react-navigation/stack";
+
+import About from "../screens/More/About";
+import Settings from "../screens/More/Settings";
+import Trackers from "../screens/More/Trackers";
+
+const Stack = createStackNavigator();
+
+const stackNavigatorConfig = {
+ headerShown: false,
+ ...TransitionPresets.RevealFromBottomAndroid,
+};
+
+const MoreStack = () => {
+ return (
+
+
+
+
+
+ );
+};
+
+export default MoreStack;
diff --git a/src/database/queries/NovelQueries.js b/src/database/queries/NovelQueries.js
index b9c01803..bb902d5c 100644
--- a/src/database/queries/NovelQueries.js
+++ b/src/database/queries/NovelQueries.js
@@ -2,7 +2,7 @@ import * as FileSystem from "expo-file-system";
import * as SQLite from "expo-sqlite";
import { getLibrary } from "./LibraryQueries";
-import { fetchChapters } from "../../source/Source";
+import { fetchChapters } from "../../Services/Source/source";
import { insertChapters } from "./ChapterQueries";
const db = SQLite.openDatabase("lnreader.db");
diff --git a/src/navigation/Router.js b/src/navigation/Router.js
deleted file mode 100644
index a971f698..00000000
--- a/src/navigation/Router.js
+++ /dev/null
@@ -1,172 +0,0 @@
-import React, { useEffect, useState } from "react";
-import {
- createStackNavigator,
- TransitionPresets,
-} from "@react-navigation/stack";
-import { createMaterialBottomTabNavigator } from "@react-navigation/material-bottom-tabs";
-import { Provider } from "react-native-paper";
-import { setStatusBarStyle } from "expo-status-bar";
-
-import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
-
-import Library from "../screens/Library/Library";
-import Updates from "../screens/Updates/Updates";
-import History from "../screens/History/History";
-import Browse from "../screens/Browse/Browse";
-
-import More from "../screens/More/More";
-import About from "../screens/More/About";
-import Settings from "../screens/More/Settings";
-import Trackers from "../screens/More/Trackers";
-
-import NovelItem from "../screens/Novel/Novel";
-import ChapterItem from "../screens/Chapter/Chapter";
-
-import Extension from "../screens/Extension/Extension";
-
-const Stack = createStackNavigator();
-
-const Tab = createMaterialBottomTabNavigator();
-
-const stackNavigatorConfig = {
- headerShown: false,
- ...TransitionPresets.RevealFromBottomAndroid,
-};
-
-const SettingsStack = () => {
- return (
-
-
-
-
-
- );
-};
-
-import { useSelector } from "react-redux";
-import { checkGithubRelease } from "../services/updates";
-import NewUpdateDialog from "../components/NewUpdateDialog";
-
-const BottomNavigator = () => {
- const theme = useSelector((state) => state.themeReducer.theme);
-
- return (
-
- (
-
- ),
- }}
- />
-
- (
-
- ),
- }}
- />
- (
-
- ),
- }}
- />
- (
-
- ),
- }}
- />
- (
-
- ),
- }}
- />
-
- );
-};
-
-const Router = () => {
- const theme = useSelector((state) => state.themeReducer.theme);
-
- const [newUpdate, setNewUpdate] = useState();
-
- useEffect(() => {
- setStatusBarStyle(theme.id === 1 ? "dark" : "light");
- checkGithubRelease().then((res) => setNewUpdate(res));
- }, []);
-
- return (
-
- {newUpdate && newUpdate.tag_name !== "v1.0.15" && (
-
- )}
-
-
-
-
-
-
- {/* */}
-
-
- );
-};
-
-export default Router;
diff --git a/src/redux/chapter/chapter.actions.js b/src/redux/chapter/chapter.actions.js
index 13dac596..cd91985d 100644
--- a/src/redux/chapter/chapter.actions.js
+++ b/src/redux/chapter/chapter.actions.js
@@ -9,7 +9,7 @@ import {
CHAPTER_DELETED,
} from "./chapter.types";
-import { fetchChapter } from "../../source/Source";
+import { fetchChapter } from "../../Services/Source/source";
import {
markChapterRead,
diff --git a/src/redux/novel/novel.actions.js b/src/redux/novel/novel.actions.js
index dcb38dbb..a9d8c209 100644
--- a/src/redux/novel/novel.actions.js
+++ b/src/redux/novel/novel.actions.js
@@ -16,8 +16,8 @@ import {
UPDATE_NOVEL,
} from "./novel.types";
-import { updateNovel } from "../../services/updates";
-import { fetchChapter, fetchNovel } from "../../source/Source";
+import { updateNovel } from "../../Services/updates";
+import { fetchChapter, fetchNovel } from "../../Services/Source/source";
import {
followNovel,
insertNovel,
diff --git a/src/redux/source/source.actions.js b/src/redux/source/source.actions.js
index ed8649f9..6631af13 100644
--- a/src/redux/source/source.actions.js
+++ b/src/redux/source/source.actions.js
@@ -1,5 +1,5 @@
import { GET_SOURCES } from "./source.types";
-import { fetchSources } from "../../source/Source";
+import { fetchSources } from "../../Services/Source/source";
export const getSourcesAction = () => async (dispatch) => {
const res = await fetchSources();
diff --git a/src/redux/theme/theme.reducer.js b/src/redux/theme/theme.reducer.js
index cf05053e..40a26eb1 100644
--- a/src/redux/theme/theme.reducer.js
+++ b/src/redux/theme/theme.reducer.js
@@ -3,7 +3,7 @@ import {
lightTheme,
darkTheme,
midnightDuskTheme,
-} from "../../theme/theme";
+} from "../../Theme/theme";
const themes = {
0: amoledDarkTheme,
diff --git a/src/redux/tracker/tracker.actions.js b/src/redux/tracker/tracker.actions.js
index 476085a0..7decdf72 100644
--- a/src/redux/tracker/tracker.actions.js
+++ b/src/redux/tracker/tracker.actions.js
@@ -1,4 +1,4 @@
-import { findListItem, updateItem } from "../../trackers/MyAnimeList";
+import { findListItem, updateItem } from "../../Services/Trackers/myAnimeList";
import {
REMOVE_TRACKER,
SET_TRACKER,
@@ -8,7 +8,7 @@ import {
UPDATE_CHAPTERS_READ,
} from "./tracker.types";
-import { updateMalChaptersRead } from "../../trackers/MyAnimeList";
+import { updateMalChaptersRead } from "../../Services/Trackers/myAnimeList";
export const setTracker = (res) => async (dispatch) => {
dispatch({
diff --git a/src/screens/Browse/Browse.js b/src/screens/Browse/Browse.js
index d700dc27..833ede7d 100644
--- a/src/screens/Browse/Browse.js
+++ b/src/screens/Browse/Browse.js
@@ -1,6 +1,6 @@
import React, { useEffect } from "react";
import { StyleSheet, View, FlatList, ActivityIndicator } from "react-native";
-import { Appbar } from "../../components/Appbar";
+import { Appbar } from "../../Components/Appbar";
import { connect } from "react-redux";
import { getSourcesAction } from "../../redux/source/source.actions";
diff --git a/src/screens/Chapter/Chapter.js b/src/screens/Chapter/Chapter.js
index 8e6279f9..1e5297ad 100644
--- a/src/screens/Chapter/Chapter.js
+++ b/src/screens/Chapter/Chapter.js
@@ -13,7 +13,7 @@ import {
} from "../../redux/novel/novel.actions";
import { connect, useSelector, useDispatch } from "react-redux";
-import { parseChapterNumber } from "../../services/updates";
+import { parseChapterNumber } from "../../Services/updates";
import { updateChaptersRead } from "../../redux/tracker/tracker.actions";
const ChapterItem = ({
@@ -126,7 +126,7 @@ const ChapterItem = ({
size={26}
disabled={!chapter.prevChapter}
onPress={() => {
- navigation.replace("ChapterItem", {
+ navigation.replace("Chapter", {
chapterUrl: chapter.prevChapter,
chapterId: chapterId - 1,
extensionId,
@@ -142,7 +142,7 @@ const ChapterItem = ({
size={26}
disabled={!chapter.nextChapter}
onPress={() => {
- navigation.replace("ChapterItem", {
+ navigation.replace("Chapter", {
chapterUrl: chapter.nextChapter,
extensionId,
novelUrl,
diff --git a/src/screens/Chapter/components/BottomSheet.js b/src/screens/Chapter/components/BottomSheet.js
index c220973d..dbcfb54a 100644
--- a/src/screens/Chapter/components/BottomSheet.js
+++ b/src/screens/Chapter/components/BottomSheet.js
@@ -3,7 +3,7 @@ import { Animated, StyleSheet, View, Text, Dimensions } from "react-native";
import { ToggleButton, IconButton, Chip } from "react-native-paper";
import Slider from "@react-native-community/slider";
import Bottomsheet from "rn-sliding-up-panel";
-import { fonts } from "../../../utils/constants";
+import { fonts } from "../../../Services/utils/constants";
import { connect } from "react-redux";
@@ -14,7 +14,7 @@ import {
updateReaderTextSize,
updateReaderTheme,
} from "../../../redux/settings/settings.actions";
-import BottomSheetHandle from "../../../components/BottomSheetHandle";
+import BottomSheetHandle from "../../../Components/BottomSheetHandle";
const ChapterBottomSheet = ({
bottomSheetRef,
diff --git a/src/screens/Extension/Extension.js b/src/screens/Extension/Extension.js
index a7e1b5cc..1e7cd50f 100644
--- a/src/screens/Extension/Extension.js
+++ b/src/screens/Extension/Extension.js
@@ -3,9 +3,9 @@ import { StyleSheet, View, FlatList, ActivityIndicator } from "react-native";
import { Provider } from "react-native-paper";
import * as WebBrowser from "expo-web-browser";
-import NovelCover from "../../components/NovelCover";
-import EmptyView from "../../components/EmptyView";
-import { SearchAppbar } from "../../components/Appbar";
+import NovelCover from "../../Components/NovelCover";
+import EmptyView from "../../Components/EmptyView";
+import { SearchAppbar } from "../../Components/Appbar";
import { useSelector } from "react-redux";
@@ -104,7 +104,7 @@ const Extension = ({ navigation, route }) => {
- navigation.navigate("NovelItem", {
+ navigation.navigate("Novel", {
novelName: item.novelName,
novelCover: item.novelCover,
novelUrl: item.novelUrl,
diff --git a/src/screens/History/History.js b/src/screens/History/History.js
index 2d671113..c36d7a08 100644
--- a/src/screens/History/History.js
+++ b/src/screens/History/History.js
@@ -3,11 +3,11 @@ import { useFocusEffect } from "@react-navigation/native";
import { StyleSheet, View, FlatList, ActivityIndicator } from "react-native";
-import { Appbar } from "../../components/Appbar";
+import { Appbar } from "../../Components/Appbar";
import HistoryCard from "./components/HistoryCard";
import { connect } from "react-redux";
-import EmptyView from "../../components/EmptyView";
+import EmptyView from "../../Components/EmptyView";
import {
getHistoryAction,
diff --git a/src/screens/History/components/HistoryCard.js b/src/screens/History/components/HistoryCard.js
index 93833356..8bcd3e8c 100644
--- a/src/screens/History/components/HistoryCard.js
+++ b/src/screens/History/components/HistoryCard.js
@@ -16,7 +16,7 @@ const HistoryCard = ({ item, deleteHistoryAction, navigation }) => {
rippleColor={theme.rippleColor}
borderless
onPress={() =>
- navigation.navigate("NovelItem", {
+ navigation.navigate("Novel", {
novelName: item.novelName,
novelCover: item.novelCover,
extensionId: item.extensionId,
@@ -75,7 +75,7 @@ const HistoryCard = ({ item, deleteHistoryAction, navigation }) => {
color={theme.textColorPrimary}
style={{ marginRight: 10 }}
onPress={() =>
- navigation.navigate("ChapterItem", {
+ navigation.navigate("Chapter", {
chapterId: item.historyChapterId,
chapterUrl: item.chapterUrl,
extensionId: item.sourceId,
diff --git a/src/screens/Library/Library.js b/src/screens/Library/Library.js
index f046e61b..edf82759 100644
--- a/src/screens/Library/Library.js
+++ b/src/screens/Library/Library.js
@@ -11,16 +11,16 @@ import { FlatList } from "react-native-gesture-handler";
import { useFocusEffect } from "@react-navigation/native";
import { connect } from "react-redux";
-import NovelCover from "../../components/NovelCover";
-import EmptyView from "../../components/EmptyView";
+import NovelCover from "../../Components/NovelCover";
+import EmptyView from "../../Components/EmptyView";
import {
getLibraryAction,
searchLibraryAction,
} from "../../redux/library/library.actions";
-import { SearchAppbar } from "../../components/Appbar";
+import { SearchAppbar } from "../../Components/Appbar";
import { setNovel } from "../../redux/novel/novel.actions";
-import { updateAllNovels } from "../../services/updates";
+import { updateAllNovels } from "../../Services/updates";
const LibraryScreen = ({
navigation,
@@ -54,7 +54,7 @@ const LibraryScreen = ({
};
const redirectToNovel = (item) => {
- navigation.navigate("NovelItem", item);
+ navigation.navigate("Novel", item);
setNovel(item);
};
diff --git a/src/screens/More/About.js b/src/screens/More/About.js
index 651869ad..1bbdadd7 100644
--- a/src/screens/More/About.js
+++ b/src/screens/More/About.js
@@ -2,10 +2,10 @@ import React from "react";
import { View } from "react-native";
import * as Linking from "expo-linking";
-import { Appbar } from "../../components/Appbar";
+import { Appbar } from "../../Components/Appbar";
import { useSelector } from "react-redux";
-import { Divider, ListItem, ListSection } from "../../components/List";
+import { Divider, ListItem, ListSection } from "../../Components/List";
const AboutScreen = ({ navigation }) => {
const theme = useSelector((state) => state.themeReducer.theme);
@@ -17,12 +17,12 @@ const AboutScreen = ({ navigation }) => {
{
const theme = useSelector((state) => state.themeReducer.theme);
@@ -37,7 +37,7 @@ const MoreScreen = ({ navigation }) => {
title="Settings"
icon="cog-outline"
onPress={() =>
- navigation.navigate("SettingsStack", {
+ navigation.navigate("MoreStack", {
screen: "Settings",
})
}
@@ -47,7 +47,7 @@ const MoreScreen = ({ navigation }) => {
title="Tracking"
icon="sync"
onPress={() =>
- navigation.navigate("SettingsStack", {
+ navigation.navigate("MoreStack", {
screen: "Trackers",
})
}
@@ -57,7 +57,7 @@ const MoreScreen = ({ navigation }) => {
title="About"
icon="information-outline"
onPress={() =>
- navigation.navigate("SettingsStack", {
+ navigation.navigate("MoreStack", {
screen: "About",
})
}
diff --git a/src/screens/More/Settings.js b/src/screens/More/Settings.js
index 34b04d01..e4519244 100644
--- a/src/screens/More/Settings.js
+++ b/src/screens/More/Settings.js
@@ -14,13 +14,13 @@ import {
restoreFromBackup,
} from "../../database/queries/NovelQueries";
-import { Appbar } from "../../components/Appbar";
+import { Appbar } from "../../Components/Appbar";
import {
Divider,
ListItem,
ListSection,
ListSubHeader,
-} from "../../components/List";
+} from "../../Components/List";
import DisplayModeModal from "./components/DisplayModeModal";
import GridSizeModal from "./components/GridSizeModal";
import ThemeModal from "./components/ThemeModal";
diff --git a/src/screens/More/Trackers.js b/src/screens/More/Trackers.js
index cfe166ec..898d133b 100644
--- a/src/screens/More/Trackers.js
+++ b/src/screens/More/Trackers.js
@@ -7,8 +7,8 @@ import {
myAnimeListConfig,
getAccessToken,
malTokenWatcher,
-} from "../../trackers/MyAnimeList";
-import { Appbar } from "../../components/Appbar";
+} from "../../Services/Trackers/myAnimeList";
+import { Appbar } from "../../Components/Appbar";
import { useSelector, useDispatch } from "react-redux";
import {
@@ -16,7 +16,7 @@ import {
ListItem,
ListSection,
ListSubHeader,
-} from "../../components/List";
+} from "../../Components/List";
import { removeTracker, setTracker } from "../../redux/tracker/tracker.actions";
const TrackerScreen = ({ navigation }) => {
diff --git a/src/screens/More/components/GridSizeModal.js b/src/screens/More/components/GridSizeModal.js
index c08df030..92427107 100644
--- a/src/screens/More/components/GridSizeModal.js
+++ b/src/screens/More/components/GridSizeModal.js
@@ -2,7 +2,7 @@ import React from "react";
import { Text, StyleSheet } from "react-native";
import { Portal, Modal } from "react-native-paper";
import Slider from "@react-native-community/slider";
-import { RadioButton, RadioButtonGroup } from "../../../components/RadioButton";
+import { RadioButton, RadioButtonGroup } from "../../../Components/RadioButton";
const GridSizeModal = ({
itemsPerRow,
diff --git a/src/screens/Novel/components/ChapterCard.js b/src/screens/Novel/components/ChapterCard.js
index e88c8c4e..25116920 100644
--- a/src/screens/Novel/components/ChapterCard.js
+++ b/src/screens/Novel/components/ChapterCard.js
@@ -89,7 +89,7 @@ const ChapterCard = ({
- navigation.navigate("ChapterItem", {
+ navigation.navigate("Chapter", {
chapterId: chapter.chapterId,
chapterUrl: chapter.chapterUrl,
extensionId,
diff --git a/src/screens/Novel/components/Info/ReadButton.js b/src/screens/Novel/components/Info/ReadButton.js
index 38cccc93..d99e3093 100644
--- a/src/screens/Novel/components/Info/ReadButton.js
+++ b/src/screens/Novel/components/Info/ReadButton.js
@@ -17,7 +17,7 @@ const ReadButton = ({ navigation, novel, chapters, theme }) => {
uppercase={false}
labelStyle={{ letterSpacing: 0 }}
onPress={() => {
- navigation.navigate("ChapterItem", {
+ navigation.navigate("Chapter", {
chapterId: lastRead.chapterId,
chapterUrl: lastRead.chapterUrl,
novelUrl: novel.novelUrl,
diff --git a/src/screens/Novel/components/Tracker/SetTrackChaptersDialog.js b/src/screens/Novel/components/Tracker/SetTrackChaptersDialog.js
index 33412f2a..6dd040fe 100644
--- a/src/screens/Novel/components/Tracker/SetTrackChaptersDialog.js
+++ b/src/screens/Novel/components/Tracker/SetTrackChaptersDialog.js
@@ -4,7 +4,7 @@ import { Modal, TextInput } from "react-native-paper";
import {
RadioButton,
RadioButtonGroup,
-} from "../../../../components/RadioButton";
+} from "../../../../Components/RadioButton";
const SetTrackChaptersDialog = ({
trackItem,
diff --git a/src/screens/Novel/components/Tracker/SetTrackScoreDialog.js b/src/screens/Novel/components/Tracker/SetTrackScoreDialog.js
index 4ae5d456..efe43f1f 100644
--- a/src/screens/Novel/components/Tracker/SetTrackScoreDialog.js
+++ b/src/screens/Novel/components/Tracker/SetTrackScoreDialog.js
@@ -4,7 +4,7 @@ import { Modal } from "react-native-paper";
import {
RadioButton,
RadioButtonGroup,
-} from "../../../../components/RadioButton";
+} from "../../../../Components/RadioButton";
const SetTrackScoreDialog = ({
trackItem,
diff --git a/src/screens/Novel/components/Tracker/SetTrackStatusDialog.js b/src/screens/Novel/components/Tracker/SetTrackStatusDialog.js
index 5439e000..853e8062 100644
--- a/src/screens/Novel/components/Tracker/SetTrackStatusDialog.js
+++ b/src/screens/Novel/components/Tracker/SetTrackStatusDialog.js
@@ -4,7 +4,7 @@ import { Modal } from "react-native-paper";
import {
RadioButton,
RadioButtonGroup,
-} from "../../../../components/RadioButton";
+} from "../../../../Components/RadioButton";
const SetTrackStatusDialog = ({
trackItem,
diff --git a/src/screens/Novel/components/Tracker/TrackSearchDialog.js b/src/screens/Novel/components/Tracker/TrackSearchDialog.js
index af6a2ec0..ce0cff09 100644
--- a/src/screens/Novel/components/Tracker/TrackSearchDialog.js
+++ b/src/screens/Novel/components/Tracker/TrackSearchDialog.js
@@ -1,7 +1,7 @@
import React, { useEffect, useState } from "react";
import { StyleSheet, Text, View, Image, ActivityIndicator } from "react-native";
import { Button, Modal, TextInput, TouchableRipple } from "react-native-paper";
-import { searchNovels } from "../../../../trackers/MyAnimeList";
+import { searchNovels } from "../../../../Services/Trackers/myAnimeList";
import { useSelector, useDispatch } from "react-redux";
import { ScrollView } from "react-native-gesture-handler";
import { trackNovel } from "../../../../redux/tracker/tracker.actions";
diff --git a/src/screens/Updates/Updates.js b/src/screens/Updates/Updates.js
index 59c3846f..fcebb14f 100644
--- a/src/screens/Updates/Updates.js
+++ b/src/screens/Updates/Updates.js
@@ -3,7 +3,7 @@ import { useFocusEffect } from "@react-navigation/native";
import { StyleSheet, View, FlatList, ActivityIndicator } from "react-native";
import { connect } from "react-redux";
-import EmptyView from "../../components/EmptyView";
+import EmptyView from "../../Components/EmptyView";
import { getUpdatesAction } from "../../redux/updates/updates.actions";
import { Appbar } from "./components/Appbar";
import UpdateCard from "./components/UpdateCard";
diff --git a/src/screens/Updates/components/Appbar.js b/src/screens/Updates/components/Appbar.js
index 5cfae472..c47f7600 100644
--- a/src/screens/Updates/components/Appbar.js
+++ b/src/screens/Updates/components/Appbar.js
@@ -2,7 +2,7 @@ import React from "react";
import { Appbar as MaterialAppbar } from "react-native-paper";
import { useSelector } from "react-redux";
-import { updateAllNovels } from "../../../services/updates";
+import { updateAllNovels } from "../../../Services/updates";
export const Appbar = () => {
const theme = useSelector((state) => state.themeReducer.theme);
diff --git a/src/screens/Updates/components/UpdateCard.js b/src/screens/Updates/components/UpdateCard.js
index 237f5ed6..b944f794 100644
--- a/src/screens/Updates/components/UpdateCard.js
+++ b/src/screens/Updates/components/UpdateCard.js
@@ -16,7 +16,7 @@ const UpdateCard = ({ item }) => {
style={styles.updateCard}
onPress={() =>
// console.log(item);
- navigation.navigate("ChapterItem", {
+ navigation.navigate("Chapter", {
chapterId: item.chapterId,
chapterUrl: item.chapterUrl,
extensionId: item.sourceId,
diff --git a/src/source/Source.js b/src/services/Source/source.js
similarity index 100%
rename from src/source/Source.js
rename to src/services/Source/source.js
diff --git a/src/trackers/MyAnimeList.js b/src/services/Trackers/myAnimeList.js
similarity index 100%
rename from src/trackers/MyAnimeList.js
rename to src/services/Trackers/myAnimeList.js
diff --git a/src/services/updates.js b/src/services/updates.js
index e7f26738..de49ab45 100644
--- a/src/services/updates.js
+++ b/src/services/updates.js
@@ -1,10 +1,8 @@
-import React from "react";
import * as SQLite from "expo-sqlite";
import { getLibrary } from "../database/queries/LibraryQueries";
-import { fetchChapters, fetchNovel } from "../source/Source";
+import { fetchChapters, fetchNovel } from "../Services/Source/source";
const db = SQLite.openDatabase("lnreader.db");
import { ToastAndroid } from "react-native";
-import NewUpdateDialog from "../components/NewUpdateDialog";
export const checkGithubRelease = async () => {
const res = await fetch(
diff --git a/src/utils/constants.js b/src/services/utils/constants.js
similarity index 100%
rename from src/utils/constants.js
rename to src/services/utils/constants.js
diff --git a/src/theme/hooks/useTheme.js b/src/theme/hooks/useTheme.js
new file mode 100644
index 00000000..6c988502
--- /dev/null
+++ b/src/theme/hooks/useTheme.js
@@ -0,0 +1,7 @@
+import { useSelector } from "react-redux";
+
+export const useTheme = () => {
+ const currentTheme = useSelector((state) => state.themeReducer.theme);
+
+ return currentTheme;
+};