diff --git a/app.json b/app.json index 78d9c73..a21474c 100644 --- a/app.json +++ b/app.json @@ -22,7 +22,8 @@ "adaptiveIcon": { "foregroundImage": "./assets/images/adaptive-icon.png", "backgroundColor": "#ffffff" - } + }, + "package": "com.thschleicher.interaktivesysteme" }, "web": { "bundler": "metro", @@ -34,6 +35,14 @@ ], "experiments": { "typedRoutes": true + }, + "extra": { + "router": { + "origin": false + }, + "eas": { + "projectId": "df718026-ba19-4dad-b01a-a79eb4919b9d" + } } } } diff --git a/app/(tabs)/budget/index.tsx b/app/(tabs)/budget/index.tsx index 001f94a..275373d 100644 --- a/app/(tabs)/budget/index.tsx +++ b/app/(tabs)/budget/index.tsx @@ -1,21 +1,27 @@ -import { useEffect } from 'react'; -import { Text } from 'react-native'; -import { executeQuery, initDatabase, addCategory } from '../../../services/database'; +import { StyleSheet, Text, View } from 'react-native'; +import { deleteExpenses } from '../../../services/database'; export default function Page() { - useEffect(() => { - initDatabase().then(); - addCategory("Test Category 2", "FFFFFF", "budget").then(); + return ( + + { + deleteExpenses().then(() => { + console.log("Expenses Deleted!"); + }) + }}>Reset Expenses + ); +} - executeQuery("SELECT * FROM category").then((res) => { - console.log(res); - });; - - //deleteDatabase(); - }); - - - - return Budget Page; -} \ No newline at end of file +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + text: { + textAlign: 'center', + fontSize: 40, + color: "red", + } +}); \ No newline at end of file diff --git a/app/(tabs)/home/index.tsx b/app/(tabs)/home/index.tsx index 622a6dc..9a3842f 100644 --- a/app/(tabs)/home/index.tsx +++ b/app/(tabs)/home/index.tsx @@ -1,11 +1,11 @@ -import { useRouter } from "expo-router"; +import { useFocusEffect, useRouter } from "expo-router"; import React, { useEffect, useRef, useState } from 'react'; import { NativeScrollEvent, NativeSyntheticEvent, StyleSheet, View } from 'react-native'; import { FlatList } from 'react-native-gesture-handler'; import { SafeAreaView } from 'react-native-safe-area-context'; import { ExpenseItem, Plus, SearchBar, Welcome } from '../../../components'; import { useThemeColor } from "../../../hooks/hooks"; -import { executeQuery } from "../../../services/database"; +import { addCategory, addExpense, executeQuery } from "../../../services/database"; import { useAuth } from '../../contexts/AuthContext'; export default function Page() { @@ -39,20 +39,39 @@ export default function Page() { const [data, setData] = useState<{[column: string]: any;}[]>([]); - useEffect(() => { - executeQuery("SELECT e.guid AS expense_guid, e.name AS expense_name, c.name AS category_name, e.datetime AS expense_datetime, e.amount AS expense_amount, c.color AS category_color FROM expense e JOIN category c ON e.category_guid = c.guid;").then((result) => { + //only for demonstration during phase 1, delete later + useEffect(() => { + addCategory("Test Category", "red", "budget"); + update(); + }, []); + useFocusEffect(() => { + update(); + }); + + const update = () => { + executeQuery("SELECT e.guid AS expense_guid, e.name AS expense_name, c.name AS category_name, e.datetime AS expense_datetime, e.amount AS expense_amount, c.color AS category_color FROM expense e JOIN category c ON e.category_guid = c.guid;").then((result) => { if(result === undefined) return; setData(result); }).catch((error) => { throw error; }); - }, []); + } return ( {plusShow && { - router.push("/(tabs)/home/addItem") + // router.push("/(tabs)/home/addItem"); + + executeQuery("SELECT guid FROM category").then((result) => { + if(result === undefined) return; + addExpense("Random Expense", result[0]["guid"], "12.08.2023", 1).then(() => { + update(); + }); + }).catch((error) => { + throw error; + }); + }}/>} =10" + } + }, + "node_modules/expo-dev-launcher/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-dev-launcher/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/expo-dev-menu": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-3.2.2.tgz", + "integrity": "sha512-q0IDlCGkZMsDIFV+Mgnz0Q3u/bcnrF8IFMglJ0onF09e5csLk5Ts7hKoQyervOJeThyI402r9OQsFNaru2tgtg==", + "dependencies": { + "expo-dev-menu-interface": "1.3.0", + "semver": "^7.5.3" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu-interface": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.3.0.tgz", + "integrity": "sha512-WtRP7trQ2lizJJTTFXUSGGn1deIeHaYej0sUynvu/uC69VrSP4EeSnYOxbmEO29kuT/MsQBMGu0P/AkMQOqCOg==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-dev-menu/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-dev-menu/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/expo-file-system": { "version": "15.4.5", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.5.tgz", @@ -8844,6 +8953,11 @@ "react-native": "*" } }, + "node_modules/expo-json-utils": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.7.1.tgz", + "integrity": "sha512-L0lyH8diXQtV0q5BLbFlcoxTqPF5im79xDHPhybB0j36xYdm65hjwRJ4yMrPIN5lR18hj48FUZeONiDHRyEvIg==" + }, "node_modules/expo-keep-awake": { "version": "12.3.0", "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz", @@ -8864,6 +8978,14 @@ "url-parse": "^1.5.9" } }, + "node_modules/expo-manifests": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.7.2.tgz", + "integrity": "sha512-xlhL0XI2zw3foJ0q2Ra4ieBhU0V2yz+Rv6GpVEaaIHFlIC/Dbx+mKrX5dgenZEMERr/MG7sRJaRbAVB2PaAYhA==", + "dependencies": { + "expo-json-utils": "~0.7.0" + } + }, "node_modules/expo-modules-autolinking": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz", @@ -9075,6 +9197,14 @@ "expo": "*" } }, + "node_modules/expo-updates-interface": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.10.1.tgz", + "integrity": "sha512-I6JMR7EgjXwckrydDmrkBEX/iw750dcqpzQVsjznYWfi0HTEOxajLHB90fBFqQkUV5i5s4Fd3hYQ1Cn0oMzUbA==", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-web-browser": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.3.2.tgz", diff --git a/package.json b/package.json index 8fff007..4691426 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,8 @@ "react-native-safe-area-context": "4.6.3", "react-native-screens": "~3.22.0", "react-native-uuid": "^2.0.1", - "react-native-web": "~0.19.6" + "react-native-web": "~0.19.6", + "expo-dev-client": "~2.4.12" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/services/database.ts b/services/database.ts index dbe3336..554ef15 100644 --- a/services/database.ts +++ b/services/database.ts @@ -95,6 +95,17 @@ export const executeQuery = async (query: string) => { console.error("Query could not be executed!"); }; +export const deleteExpenses = async () => { + try { + await db.transactionAsync(async (tx: SQLite.SQLTransactionAsync) => { + await tx.executeSqlAsync("DELETE FROM expense;"); + }); + } catch(error) { + console.log("Error deleting expense: ", error); + throw error; + } +} + export const deleteDatabase = () => { closeDatabase().then(() => { try {