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 {