diff --git a/mobile/app.json b/mobile/app.json
index bd312b6..64945eb 100644
--- a/mobile/app.json
+++ b/mobile/app.json
@@ -10,9 +10,26 @@
"**/*"
],
"ios": {
- "supportsTablet": false
+ "supportsTablet": false,
+ "bundleIdentifier": "com.discoverly.app"
+ },
+ "android": {
+ "package": "com.discoverly.app",
+ "intentFilters": [
+ {
+ "action": "VIEW",
+ "data": [
+ {
+ "scheme": "discoverly"
+ }
+ ],
+ "category": [
+ "BROWSABLE",
+ "DEFAULT"
+ ]
+ }
+ ]
},
- "android": {},
"web": {
"bundler": "metro"
},
diff --git a/mobile/app/(auth)/_layout.tsx b/mobile/app/(auth)/_layout.tsx
new file mode 100644
index 0000000..949e0b3
--- /dev/null
+++ b/mobile/app/(auth)/_layout.tsx
@@ -0,0 +1,21 @@
+import { Redirect, Stack } from "expo-router"
+import { useAuthStore } from "../../src/store/useAuthStore"
+
+export default function AuthLayout() {
+ const token = useAuthStore((state) => state.token)
+
+ if (token) {
+ return
+ }
+
+ return (
+
+
+
+
+ )
+}
diff --git a/mobile/app/(auth)/login.tsx b/mobile/app/(auth)/login.tsx
index 1f6159a..02109ce 100644
--- a/mobile/app/(auth)/login.tsx
+++ b/mobile/app/(auth)/login.tsx
@@ -10,6 +10,7 @@ import { type LoginFormValues, loginSchema } from "../../src/validation/auth"
export default function LoginScreen() {
const router = useRouter()
const setToken = useAuthStore((state) => state.setToken)
+
const {
control,
handleSubmit,
@@ -43,6 +44,7 @@ export default function LoginScreen() {
Sign in to continue matching with dishes around you.
+
)}
/>
+
)}
/>
+
Go To Register
diff --git a/mobile/app/(auth)/register.tsx b/mobile/app/(auth)/register.tsx
index bd5f5f0..e962011 100644
--- a/mobile/app/(auth)/register.tsx
+++ b/mobile/app/(auth)/register.tsx
@@ -1,7 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod"
import { Link, useRouter } from "expo-router"
import { Controller, useForm } from "react-hook-form"
-import { ScrollView, View } from "react-native"
+import { ScrollView } from "react-native"
import { Button, Input, Typography } from "../../src/components"
import { useAuthStore } from "../../src/store/useAuthStore"
import { colors, spacing } from "../../src/theme/tokens"
@@ -10,6 +10,7 @@ import { type RegisterFormValues, registerSchema } from "../../src/validation/au
export default function RegisterScreen() {
const router = useRouter()
const setToken = useAuthStore((state) => state.setToken)
+
const {
control,
handleSubmit,
@@ -46,6 +47,7 @@ export default function RegisterScreen() {
Create your account to start discovering meals instantly.
+
)}
/>
+
)}
/>
+
(
-
+ <>
+
+ {!errors.password?.message ? (
+
+ Minimum 8 characters
+
+ ) : null}
+ >
)}
/>
+
)}
/>
+
Back To Login
diff --git a/mobile/app/(tabs)/_layout.tsx b/mobile/app/(tabs)/_layout.tsx
index a82e9c7..a9bdfec 100644
--- a/mobile/app/(tabs)/_layout.tsx
+++ b/mobile/app/(tabs)/_layout.tsx
@@ -1,9 +1,15 @@
-import { Tabs } from "expo-router"
+import { Redirect, Tabs } from "expo-router"
import { useCartStore } from "../../src/store/useCartStore"
+import { useAuthStore } from "../../src/store/useAuthStore"
export default function TabsLayout() {
+ const token = useAuthStore((state) => state.token)
const itemCount = useCartStore((state) => state.items.length)
+ if (!token) {
+ return
+ }
+
return (
diff --git a/mobile/app/(tabs)/profile.tsx b/mobile/app/(tabs)/profile.tsx
index 292d27c..915d3a6 100644
--- a/mobile/app/(tabs)/profile.tsx
+++ b/mobile/app/(tabs)/profile.tsx
@@ -1,9 +1,25 @@
-import { Text, View } from "react-native"
+import { useRouter } from "expo-router"
+import { Pressable, Text, View } from "react-native"
+import { useAuthStore } from "../../src/store/useAuthStore"
export default function ProfileScreen() {
+ const router = useRouter()
+ const logout = useAuthStore((state) => state.logout)
+
+ const onLogout = () => {
+ logout()
+ router.replace("/(auth)/login")
+ }
+
return (
-
+
User Profile & Wallet.
+
+ Logout
+
)
}
diff --git a/mobile/app/index.tsx b/mobile/app/index.tsx
index 0507072..5c2d44c 100644
--- a/mobile/app/index.tsx
+++ b/mobile/app/index.tsx
@@ -1,5 +1,8 @@
import { Redirect } from "expo-router"
+import { useAuthStore } from "../src/store/useAuthStore"
export default function IndexScreen() {
- return
+ const token = useAuthStore((state) => state.token)
+
+ return
}