Resolve "addButton (for demo)"

This commit is contained in:
Thomas Schleicher 2023-12-08 19:07:32 +00:00
parent 54b2b41ed2
commit 60712e8397
7 changed files with 210 additions and 25 deletions

View file

@ -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"
}
}
}
}

View file

@ -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();
executeQuery("SELECT * FROM category").then((res) => {
console.log(res);
});;
//deleteDatabase();
});
return <Text>Budget Page</Text>;
return (
<View style={styles.container}>
<Text style={styles.text} onPress={() => {
deleteExpenses().then(() => {
console.log("Expenses Deleted!");
})
}}>Reset Expenses</Text>
</View>);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
text: {
textAlign: 'center',
fontSize: 40,
color: "red",
}
});

View file

@ -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;}[]>([]);
//only for demonstration during phase 1, delete later
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) => {
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 (
<SafeAreaView style={{flex: 1, backgroundColor: backgroundColor}}>
{plusShow && <Plus onPress={()=>{
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;
});
}}/>}
<FlatList

9
eas.json Normal file
View file

@ -0,0 +1,9 @@
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
}
}
}

130
package-lock.json generated
View file

@ -11,6 +11,7 @@
"@expo/vector-icons": "^13.0.0",
"@react-navigation/native": "^6.0.2",
"expo": "~49.0.15",
"expo-dev-client": "~2.4.12",
"expo-font": "~11.4.0",
"expo-linking": "~5.0.2",
"expo-router": "^2.0.0",
@ -8809,6 +8810,114 @@
"expo": "*"
}
},
"node_modules/expo-dev-client": {
"version": "2.4.12",
"resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-2.4.12.tgz",
"integrity": "sha512-3+xg0yb/0g6+JQaWq5+xn2uHoOXP4oSX33aWkaZPSNJLoyzfRaHNDF5MLcrMBbEHCw5T5qZRU291K+uQeMMC0g==",
"dependencies": {
"expo-dev-launcher": "2.4.14",
"expo-dev-menu": "3.2.2",
"expo-dev-menu-interface": "1.3.0",
"expo-manifests": "~0.7.0",
"expo-updates-interface": "~0.10.0"
},
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-dev-launcher": {
"version": "2.4.14",
"resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-2.4.14.tgz",
"integrity": "sha512-SlUf+fEX9sKzDzY1Ui8j5775eLKpO0xPVoI89G7CRsrpUv6ZRvRF836cMFesxkU5d+3bXHpKzDQiEPDSI1G/WQ==",
"dependencies": {
"expo-dev-menu": "3.2.2",
"resolve-from": "^5.0.0",
"semver": "^7.5.3"
},
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-dev-launcher/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-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",

View file

@ -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",

View file

@ -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 {