Resolve "addButton (for demo)"
This commit is contained in:
parent
54b2b41ed2
commit
60712e8397
7 changed files with 210 additions and 25 deletions
11
app.json
11
app.json
|
|
@ -22,7 +22,8 @@
|
||||||
"adaptiveIcon": {
|
"adaptiveIcon": {
|
||||||
"foregroundImage": "./assets/images/adaptive-icon.png",
|
"foregroundImage": "./assets/images/adaptive-icon.png",
|
||||||
"backgroundColor": "#ffffff"
|
"backgroundColor": "#ffffff"
|
||||||
}
|
},
|
||||||
|
"package": "com.thschleicher.interaktivesysteme"
|
||||||
},
|
},
|
||||||
"web": {
|
"web": {
|
||||||
"bundler": "metro",
|
"bundler": "metro",
|
||||||
|
|
@ -34,6 +35,14 @@
|
||||||
],
|
],
|
||||||
"experiments": {
|
"experiments": {
|
||||||
"typedRoutes": true
|
"typedRoutes": true
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"router": {
|
||||||
|
"origin": false
|
||||||
|
},
|
||||||
|
"eas": {
|
||||||
|
"projectId": "df718026-ba19-4dad-b01a-a79eb4919b9d"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
import { useEffect } from 'react';
|
import { StyleSheet, Text, View } from 'react-native';
|
||||||
import { Text } from 'react-native';
|
import { deleteExpenses } from '../../../services/database';
|
||||||
import { executeQuery, initDatabase, addCategory } from '../../../services/database';
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
|
|
||||||
useEffect(() => {
|
return (
|
||||||
initDatabase().then();
|
<View style={styles.container}>
|
||||||
addCategory("Test Category 2", "FFFFFF", "budget").then();
|
<Text style={styles.text} onPress={() => {
|
||||||
|
deleteExpenses().then(() => {
|
||||||
|
console.log("Expenses Deleted!");
|
||||||
|
})
|
||||||
|
}}>Reset Expenses</Text>
|
||||||
|
</View>);
|
||||||
|
}
|
||||||
|
|
||||||
executeQuery("SELECT * FROM category").then((res) => {
|
const styles = StyleSheet.create({
|
||||||
console.log(res);
|
container: {
|
||||||
});;
|
flex: 1,
|
||||||
|
justifyContent: 'center',
|
||||||
//deleteDatabase();
|
alignItems: 'center',
|
||||||
});
|
},
|
||||||
|
text: {
|
||||||
|
textAlign: 'center',
|
||||||
|
fontSize: 40,
|
||||||
return <Text>Budget Page</Text>;
|
color: "red",
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { useRouter } from "expo-router";
|
import { useFocusEffect, useRouter } from "expo-router";
|
||||||
import React, { useEffect, useRef, useState } from 'react';
|
import React, { useEffect, useRef, useState } from 'react';
|
||||||
import { NativeScrollEvent, NativeSyntheticEvent, StyleSheet, View } from 'react-native';
|
import { NativeScrollEvent, NativeSyntheticEvent, StyleSheet, View } from 'react-native';
|
||||||
import { FlatList } from 'react-native-gesture-handler';
|
import { FlatList } from 'react-native-gesture-handler';
|
||||||
import { SafeAreaView } from 'react-native-safe-area-context';
|
import { SafeAreaView } from 'react-native-safe-area-context';
|
||||||
import { ExpenseItem, Plus, SearchBar, Welcome } from '../../../components';
|
import { ExpenseItem, Plus, SearchBar, Welcome } from '../../../components';
|
||||||
import { useThemeColor } from "../../../hooks/hooks";
|
import { useThemeColor } from "../../../hooks/hooks";
|
||||||
import { executeQuery } from "../../../services/database";
|
import { addCategory, addExpense, executeQuery } from "../../../services/database";
|
||||||
import { useAuth } from '../../contexts/AuthContext';
|
import { useAuth } from '../../contexts/AuthContext';
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
|
|
@ -39,20 +39,39 @@ export default function Page() {
|
||||||
|
|
||||||
const [data, setData] = useState<{[column: string]: any;}[]>([]);
|
const [data, setData] = useState<{[column: string]: any;}[]>([]);
|
||||||
|
|
||||||
useEffect(() => {
|
//only for demonstration during phase 1, delete later
|
||||||
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) => {
|
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;
|
if(result === undefined) return;
|
||||||
setData(result);
|
setData(result);
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
throw error;
|
throw error;
|
||||||
});
|
});
|
||||||
}, []);
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={{flex: 1, backgroundColor: backgroundColor}}>
|
<SafeAreaView style={{flex: 1, backgroundColor: backgroundColor}}>
|
||||||
{plusShow && <Plus onPress={()=>{
|
{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
|
<FlatList
|
||||||
|
|
|
||||||
9
eas.json
Normal file
9
eas.json
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"development": {
|
||||||
|
"developmentClient": true,
|
||||||
|
"distribution": "internal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
130
package-lock.json
generated
130
package-lock.json
generated
|
|
@ -11,6 +11,7 @@
|
||||||
"@expo/vector-icons": "^13.0.0",
|
"@expo/vector-icons": "^13.0.0",
|
||||||
"@react-navigation/native": "^6.0.2",
|
"@react-navigation/native": "^6.0.2",
|
||||||
"expo": "~49.0.15",
|
"expo": "~49.0.15",
|
||||||
|
"expo-dev-client": "~2.4.12",
|
||||||
"expo-font": "~11.4.0",
|
"expo-font": "~11.4.0",
|
||||||
"expo-linking": "~5.0.2",
|
"expo-linking": "~5.0.2",
|
||||||
"expo-router": "^2.0.0",
|
"expo-router": "^2.0.0",
|
||||||
|
|
@ -8809,6 +8810,114 @@
|
||||||
"expo": "*"
|
"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": {
|
"node_modules/expo-file-system": {
|
||||||
"version": "15.4.5",
|
"version": "15.4.5",
|
||||||
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.5.tgz",
|
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.5.tgz",
|
||||||
|
|
@ -8844,6 +8953,11 @@
|
||||||
"react-native": "*"
|
"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": {
|
"node_modules/expo-keep-awake": {
|
||||||
"version": "12.3.0",
|
"version": "12.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz",
|
||||||
|
|
@ -8864,6 +8978,14 @@
|
||||||
"url-parse": "^1.5.9"
|
"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": {
|
"node_modules/expo-modules-autolinking": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz",
|
||||||
|
|
@ -9075,6 +9197,14 @@
|
||||||
"expo": "*"
|
"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": {
|
"node_modules/expo-web-browser": {
|
||||||
"version": "12.3.2",
|
"version": "12.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.3.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,8 @@
|
||||||
"react-native-safe-area-context": "4.6.3",
|
"react-native-safe-area-context": "4.6.3",
|
||||||
"react-native-screens": "~3.22.0",
|
"react-native-screens": "~3.22.0",
|
||||||
"react-native-uuid": "^2.0.1",
|
"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": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.20.0",
|
"@babel/core": "^7.20.0",
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,17 @@ export const executeQuery = async (query: string) => {
|
||||||
console.error("Query could not be executed!");
|
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 = () => {
|
export const deleteDatabase = () => {
|
||||||
closeDatabase().then(() => {
|
closeDatabase().then(() => {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
Reference in a new issue