🚧 Work in progress
Changes
16 files changed, +46 -41
MODIFY
.gitignore
+2 -0
@@ -44,3 +44,5 @@
44
44
# generated native folders
45
45
/ios
46
46
/android
47
+
48
+.idea/
MODIFY
app.json
+4 -4
@@ -4,7 +4,7 @@
4
4
"slug": "taskflow",
5
5
"version": "1.0.0",
6
6
"orientation": "portrait",
7
- "icon": "./assets/images/Logo.png",
7
+ "icon": "./assets/images/Icon.png",
8
8
"scheme": "taskflow",
9
9
"userInterfaceStyle": "automatic",
10
10
"newArchEnabled": true,
@@ -14,7 +14,7 @@
14
14
"android": {
15
15
"adaptiveIcon": {
16
16
"backgroundColor": "#E6F4FE",
17
- "foregroundImage": "./assets/images/Logo.png"
17
+ "foregroundImage": "./assets/images/Icon.png"
18
18
},
19
19
"edgeToEdgeEnabled": true,
20
20
"predictiveBackGestureEnabled": false,
@@ -29,7 +29,7 @@
29
29
[
30
30
"expo-splash-screen",
31
31
{
32
- "image": "./assets/images/Logo.png",
32
+ "image": "./assets/images/Icon.png",
33
33
"imageWidth": 200,
34
34
"resizeMode": "contain",
35
35
"backgroundColor": "#ffffff",
@@ -41,7 +41,7 @@
41
41
[
42
42
"expo-notifications",
43
43
{
44
- "icon": "./assets/images/Logo.png",
44
+ "icon": "./assets/images/Icon.png",
45
45
"color": "#0a7ea4",
46
46
"sounds": [],
47
47
"mode": "production"
MODIFY
app/_layout.tsx
+4 -7
@@ -8,16 +8,13 @@
8
8
import { useColorScheme } from '@/hooks/use-color-scheme';
9
9
import { ThemeProvider } from '@/contexts/theme-context';
10
10
11
-export const unstable_settings = {
12
- anchor: '(tabs)',
13
-};
14
-
15
11
function RootLayoutNav() {
16
12
const colorScheme = useColorScheme();
17
13
18
14
return (
19
15
<NavigationThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
20
- <Stack>
16
+ <Stack screenOptions={{ headerShown: false }} initialRouteName="index">
17
+ <Stack.Screen name="index" options={{ headerShown: false }} />
21
18
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
22
19
<Stack.Screen name="project/[id]" options={{ headerShown: false }} />
23
20
<Stack.Screen name="archive" options={{ headerShown: false }} />
@@ -26,7 +23,7 @@
26
23
options={{
27
24
presentation: 'transparentModal',
28
25
animation: 'fade',
29
- headerShown: false
26
+ headerShown: false
30
27
}}
31
28
/>
32
29
<Stack.Screen
@@ -34,7 +31,7 @@
34
31
options={{
35
32
presentation: 'transparentModal',
36
33
animation: 'fade',
37
- headerShown: false
34
+ headerShown: false
38
35
}}
39
36
/>
40
37
<Stack.Screen name="webdav-setup" options={{ headerShown: false }} />
ADD
app/index.tsx
+5 -0
@@ -0,0 +1,5 @@
1
+import { Redirect } from 'expo-router';
2
+
3
+export default function Index() {
4
+ return <Redirect href="/(tabs)" />;
5
+}
MODIFY
app/project-modal.tsx
+5 -1
@@ -25,7 +25,11 @@
25
25
const handleClose = async () => {
26
26
// Try to save before closing
27
27
if (projectFormRef.current?.handleSave) {
28
- await projectFormRef.current.handleSave();
28
+ const saved = await projectFormRef.current.handleSave();
29
+ if (!saved && projectId === 'new') {
30
+ // Don't close if save failed on new project
31
+ return;
32
+ }
29
33
}
30
34
31
35
if (router.canDismiss()) {
ADD
assets/images/Icon.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/Logo.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/android-icon-background.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/android-icon-foreground.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/android-icon-monochrome.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/favicon.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/icon.png
+0 -0
0
0
Binary files differ
DELETE
assets/images/splash-icon.png
+0 -0
0
0
Binary files differ
MODIFY
components/project-form.tsx
+0 -3
@@ -78,9 +78,6 @@
78
78
let savedProject: Project | undefined;
79
79
if (isNew) {
80
80
savedProject = await projectService.createProject(project);
81
- if (savedProject) {
82
- onSave?.(savedProject.id);
83
- }
84
81
} else if (id) {
85
82
savedProject = await projectService.updateProject(id, project);
86
83
setIsEditing(false);
MODIFY
package-lock.json
+25 -25
@@ -14,7 +14,7 @@
14
14
"@react-navigation/bottom-tabs": "^7.4.0",
15
15
"@react-navigation/elements": "^2.6.3",
16
16
"@react-navigation/native": "^7.1.8",
17
- "expo": "~54.0.22",
17
+ "expo": "^54.0.23",
18
18
"expo-constants": "~18.0.10",
19
19
"expo-document-picker": "^14.0.7",
20
20
"expo-file-system": "^19.0.17",
@@ -2075,9 +2075,9 @@
2075
2075
}
2076
2076
},
2077
2077
"node_modules/@expo/metro-config": {
2078
- "version": "54.0.8",
2079
- "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.8.tgz",
2080
- "integrity": "sha512-rCkDQ8IT6sgcGNy48O2cTE4NlazCAgAIsD5qBsNPJLZSS0XbaILvAgGsFt/4nrx0GMGj6iQcOn5ifwV4NssTmw==",
2078
+ "version": "54.0.9",
2079
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.9.tgz",
2080
+ "integrity": "sha512-CRI4WgFXrQ2Owyr8q0liEBJveUIF9DcYAKadMRsJV7NxGNBdrIIKzKvqreDfsGiRqivbLsw6UoNb3UE7/SvPfg==",
2081
2081
"license": "MIT",
2082
2082
"dependencies": {
2083
2083
"@babel/code-frame": "^7.20.0",
@@ -4584,9 +4584,9 @@
4584
4584
}
4585
4585
},
4586
4586
"node_modules/babel-preset-expo": {
4587
- "version": "54.0.6",
4588
- "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.6.tgz",
4589
- "integrity": "sha512-GxJfwnuOPQJbzDe5WASJZdNQiukLw7i9z+Lh6JQWkUHXsShHyQrqgiKE55MD/KaP9VqJ70yZm7bYqOu8zwcWqQ==",
4587
+ "version": "54.0.7",
4588
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.7.tgz",
4589
+ "integrity": "sha512-JENWk0bvxW4I1ftveO8GRtX2t2TH6N4Z0TPvIHxroZ/4SswUfyNsUNbbP7Fm4erj3ar/JHGri5kTZ+s3xdjHZw==",
4590
4590
"license": "MIT",
4591
4591
"dependencies": {
4592
4592
"@babel/helper-module-imports": "^7.25.9",
@@ -6296,30 +6296,30 @@
6296
6296
"license": "MIT"
6297
6297
},
6298
6298
"node_modules/expo": {
6299
- "version": "54.0.22",
6300
- "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.22.tgz",
6301
- "integrity": "sha512-w8J89M9BdVwo6urwvPeV4nAUwykv9si1UHUfZvSVWQ/b2aGs0Ci/a5RZ550rdEBgJXZAapIAhdW2M28Ojw+oGg==",
6299
+ "version": "54.0.23",
6300
+ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.23.tgz",
6301
+ "integrity": "sha512-b4uQoiRwQ6nwqsT2709RS15CWYNGF3eJtyr1KyLw9WuMAK7u4jjofkhRiO0+3o1C2NbV+WooyYTOZGubQQMBaQ==",
6302
6302
"license": "MIT",
6303
6303
"peer": true,
6304
6304
"dependencies": {
6305
6305
"@babel/runtime": "^7.20.0",
6306
- "@expo/cli": "54.0.15",
6306
+ "@expo/cli": "54.0.16",
6307
6307
"@expo/config": "~12.0.10",
6308
6308
"@expo/config-plugins": "~54.0.2",
6309
6309
"@expo/devtools": "0.1.7",
6310
6310
"@expo/fingerprint": "0.15.3",
6311
6311
"@expo/metro": "~54.1.0",
6312
- "@expo/metro-config": "54.0.8",
6312
+ "@expo/metro-config": "54.0.9",
6313
6313
"@expo/vector-icons": "^15.0.3",
6314
6314
"@ungap/structured-clone": "^1.3.0",
6315
- "babel-preset-expo": "~54.0.6",
6315
+ "babel-preset-expo": "~54.0.7",
6316
6316
"expo-asset": "~12.0.9",
6317
6317
"expo-constants": "~18.0.10",
6318
6318
"expo-file-system": "~19.0.17",
6319
6319
"expo-font": "~14.0.9",
6320
6320
"expo-keep-awake": "~15.0.7",
6321
- "expo-modules-autolinking": "3.0.20",
6322
- "expo-modules-core": "3.0.24",
6321
+ "expo-modules-autolinking": "3.0.21",
6322
+ "expo-modules-core": "3.0.25",
6323
6323
"pretty-format": "^29.7.0",
6324
6324
"react-refresh": "^0.14.2",
6325
6325
"whatwg-url-without-unicode": "8.0.0-3"
@@ -6473,9 +6473,9 @@
6473
6473
}
6474
6474
},
6475
6475
"node_modules/expo-modules-autolinking": {
6476
- "version": "3.0.20",
6477
- "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.20.tgz",
6478
- "integrity": "sha512-W4XFE/A2ijrqvXYrwXug+cUQl6ALYKtsrGnd+xdnoZ+yC7HZag45CJ9mXR0qfLpwXxuBu0HDFh/a+a1MD0Ppdg==",
6476
+ "version": "3.0.21",
6477
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.21.tgz",
6478
+ "integrity": "sha512-pOtPDLln3Ju8DW1zRW4OwZ702YqZ8g+kM/tEY1sWfv22kWUtxkvK+ytRDRpRdnKEnC28okbhWqeMnmVkSFzP6Q==",
6479
6479
"license": "MIT",
6480
6480
"dependencies": {
6481
6481
"@expo/spawn-async": "^1.7.2",
@@ -6489,9 +6489,9 @@
6489
6489
}
6490
6490
},
6491
6491
"node_modules/expo-modules-core": {
6492
- "version": "3.0.24",
6493
- "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.24.tgz",
6494
- "integrity": "sha512-wmL0R3WVM2WEs0UJcq/rF1FKXbSrPmXozgzhCUujrb+crkW8p7Y/qKyPBAQwdwcqipuWYaFOgO49AdQ36jmvkA==",
6492
+ "version": "3.0.25",
6493
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.25.tgz",
6494
+ "integrity": "sha512-0P8PT8UV6c5/+p8zeVM/FXvBgn/ErtGcMaasqUgbzzBUg94ktbkIrij9t9reGCrir03BYt/Bcpv+EQtYC8JOug==",
6495
6495
"license": "MIT",
6496
6496
"dependencies": {
6497
6497
"invariant": "^2.2.4"
@@ -6861,9 +6861,9 @@
6861
6861
}
6862
6862
},
6863
6863
"node_modules/expo/node_modules/@expo/cli": {
6864
- "version": "54.0.15",
6865
- "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.15.tgz",
6866
- "integrity": "sha512-tgaKFeYNRjZssPueZMm1+2cRek6mxEsthPoBX6NzQeDlzIzYBBpnAR6xH95UO6A7r0vduBeL2acIAV1Y5aSGJQ==",
6864
+ "version": "54.0.16",
6865
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.16.tgz",
6866
+ "integrity": "sha512-hY/OdRaJMs5WsVPuVSZ+RLH3VObJmL/pv5CGCHEZHN2PxZjSZSdctyKV8UcFBXTF0yIKNAJ9XLs1dlNYXHh4Cw==",
6867
6867
"license": "MIT",
6868
6868
"dependencies": {
6869
6869
"@0no-co/graphql.web": "^1.0.8",
@@ -6876,7 +6876,7 @@
6876
6876
"@expo/json-file": "^10.0.7",
6877
6877
"@expo/mcp-tunnel": "~0.1.0",
6878
6878
"@expo/metro": "~54.1.0",
6879
- "@expo/metro-config": "~54.0.8",
6879
+ "@expo/metro-config": "~54.0.9",
6880
6880
"@expo/osascript": "^2.3.7",
6881
6881
"@expo/package-manager": "^1.9.8",
6882
6882
"@expo/plist": "^0.4.7",
MODIFY
package.json
+1 -1
@@ -17,7 +17,7 @@
17
17
"@react-navigation/bottom-tabs": "^7.4.0",
18
18
"@react-navigation/elements": "^2.6.3",
19
19
"@react-navigation/native": "^7.1.8",
20
- "expo": "~54.0.22",
20
+ "expo": "^54.0.23",
21
21
"expo-constants": "~18.0.10",
22
22
"expo-document-picker": "^14.0.7",
23
23
"expo-file-system": "^19.0.17",