diff --git a/App.js b/App.js index 4d41cb44..9ca611fb 100644 --- a/App.js +++ b/App.js @@ -21,18 +21,23 @@ export default function App() { const createTables = () => db.transaction((tx) => { tx.executeSql( - "CREATE TABLE IF NOT EXISTS LibraryTable (novelUrl VARCHAR(255) NOT NULL PRIMARY KEY, novelName VARCHAR(255), novelCover VARCHAR(255), novelSummary TEXT, Alternative VARCHAR(255), `Author(s)` VARCHAR(255), `Genre(s)` VARCHAR(255), Type VARCHAR(255), `Release` VARCHAR(255), Status VARCHAR(255))" + "CREATE TABLE IF NOT EXISTS LibraryTable (novelUrl VARCHAR(255) PRIMARY KEY, novelName VARCHAR(255), novelCover VARCHAR(255), novelSummary TEXT, Alternative VARCHAR(255), `Author(s)` VARCHAR(255), `Genre(s)` VARCHAR(255), Type VARCHAR(255), `Release` VARCHAR(255), Status VARCHAR(255))", + null, + (tx, results) => console.log("Library Table Created"), + (tx, error) => console.log(error) ); - console.log("Library Table Created"); tx.executeSql( - "CREATE TABLE IF NOT EXISTS ChapterTable (chapterUrl VARCHAR(255), chapterName VARCHAR(255), releaseDate VARCHAR(255), novelUrl VARCHAR(255), FOREIGN KEY (novelUrl) REFERENCES LibraryTable(novelUrl) ON DELETE CASCADE)" + "CREATE TABLE IF NOT EXISTS ChapterTable (chapterId INTEGER PRIMARY KEY AUTOINCREMENT, chapterUrl VARCHAR(255), chapterName VARCHAR(255), releaseDate VARCHAR(255), novelUrl VARCHAR(255), FOREIGN KEY (novelUrl) REFERENCES LibraryTable(novelUrl) ON DELETE CASCADE)", + null, + (tx, results) => console.log("Chapter Table Created"), + (tx, error) => console.log(error) ); }); useEffect(() => { createTables(); - }); + }, []); if (fontsLoaded) { return ( diff --git a/src/navigation/Router.js b/src/navigation/Router.js index 66c642ad..daebb7bd 100644 --- a/src/navigation/Router.js +++ b/src/navigation/Router.js @@ -6,7 +6,7 @@ import { TransitionPresets } from "@react-navigation/stack"; import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons"; import Library from "../screens/Library"; -import Updates from "../screens/Updates"; +import Browse from "../screens/Browse"; import Latest from "../screens/Latest"; import More from "../screens/More"; import Search from "../screens/Search"; @@ -59,12 +59,12 @@ const SearchStack = () => { ); }; -const UpdatesStack = () => { +const BrowseStack = () => { return ( @@ -91,7 +91,7 @@ const Router = () => { activeColor="#3399FF" > ( @@ -132,7 +132,7 @@ const Router = () => { /> ( { { "DROP TABLE LibraryTable", null, (txObj, { rows: { _array } }) => { - console.log("DELETED TABLE"); + console.log("DELETED LIB TABLE"); + }, + (txObj, error) => console.log("Error ", error) + ); + tx.executeSql( + "DROP TABLE ChapterTable", + null, + (txObj, { rows: { _array } }) => { + console.log("DELETED CHAP TABLE"); }, (txObj, error) => console.log("Error ", error) ); @@ -136,11 +144,11 @@ const UpdatesScreen = ({ navigation }) => { } /> )} - )} + {/* */} ); }; diff --git a/src/screens/NovelItem.js b/src/screens/NovelItem.js index 8f9a1005..38b1d1e6 100644 --- a/src/screens/NovelItem.js +++ b/src/screens/NovelItem.js @@ -8,6 +8,7 @@ import { FlatList, ScrollView, RefreshControl, + ToastAndroid, } from "react-native"; import { Appbar, @@ -33,7 +34,7 @@ const NovelItem = ({ route, navigation }) => { const [more, setMore] = useState(false); const [libraryStatus, setlibraryStatus] = useState(); - // const [dbFlag, setDbFlag] = useState(0); + const [sort, setSort] = useState("DESC"); const getNovel = () => { fetch(`http://192.168.1.39:5000/api/novel/${item.novelUrl}`) @@ -76,6 +77,26 @@ const NovelItem = ({ route, navigation }) => { }); }; + // const sortChapters = () => { + // setRefreshing(true); + // if (libraryStatus === 0) { + // setChapters((chapters) => chapters.reverse()); + // } else { + // db.transaction((tx) => { + // tx.executeSql( + // `SELECT * FROM ChapterTable WHERE novelUrl=? ORDER BY chapterId ${sort}`, + // [item.novelUrl], + // (txObj, { rows: { _array } }) => { + // setChapters(_array); + // sort === "ASC" ? setSort("DESC") : setSort("ASC"); + // setRefreshing(false); + // }, + // (txObj, error) => console.log("Error ", error) + // ); + // }); + // } + // }; + const insertToLibrary = () => { if (libraryStatus === 0) { db.transaction((tx) => { @@ -93,7 +114,11 @@ const NovelItem = ({ route, navigation }) => { novel.Release, novel.Status, ], - (tx, res) => console.log("Inserted Novel"), + (tx, res) => + ToastAndroid.show( + "Added to library", + ToastAndroid.SHORT + ), (txObj, error) => console.log("Error ", error) ); @@ -116,7 +141,10 @@ const NovelItem = ({ route, navigation }) => { "DELETE FROM LibraryTable WHERE novelUrl=?", [item.novelUrl], (txObj, res) => { - console.log("DELETED NOVEL FROM TABLE"); + ToastAndroid.show( + "Removed from library", + ToastAndroid.SHORT + ); }, (txObj, error) => console.log("Error ", error) ); @@ -380,9 +408,7 @@ const NovelItem = ({ route, navigation }) => { justifyContent: "space-between", alignItems: "center", }} - // onPress={() => - // setChapters((chapters) => chapters.reverse()) - // } + // onPress={() => sortChapters()} rippleColor={theme.rippleColorDark} > <> @@ -400,11 +426,8 @@ const NovelItem = ({ route, navigation }) => { icon="filter-variant" color={theme.textColorPrimaryDark} size={20} - // onPress={() => - // setChapters((chapters) => - // chapters.reverse() - // ) - // } + // onPress={() => sortChapters()} + disabled /> @@ -412,7 +435,7 @@ const NovelItem = ({ route, navigation }) => { data={chapters} extraData={chapters} showsVerticalScrollIndicator={false} - keyExtractor={(item) => novel.chapterUrl} + keyExtractor={(item) => item.chapterId} removeClippedSubviews={true} maxToRenderPerBatch={10} initialNumToRender={10}