diff --git a/app/src/app/(account)/account-settings.tsx b/app/src/app/(account)/account-settings.tsx index bce3757..0f98504 100644 --- a/app/src/app/(account)/account-settings.tsx +++ b/app/src/app/(account)/account-settings.tsx @@ -11,13 +11,25 @@ import PrimaryButton from "@components/ui/PrimaryButton"; export default function AccountSettings() { const router = useRouter(); - const { user, username, setUsername } = useSession(); - const { originalUsername, loading, handleUpdateProfile } = useAccountSettings(); + const { user, setUsername: setUsernameContext } = useSession(); + const { + username, + setUsername: setUsernameLocal, + originalUsername, + loading, + handleUpdateProfile, + } = useAccountSettings(); function prevCallback() { router.replace("/(tabs)/account"); } + // Keep local draft in sync and also push to session context + const handleUsernameChange = (value: string) => { + setUsernameLocal(value); // updates the input instantly + setUsernameContext(value); // persist draft to context (and DB via SessionContext) + }; + useFocusEffect( React.useCallback(() => { const backAction = () => { @@ -45,7 +57,7 @@ export default function AccountSettings() { diff --git a/app/src/app/(auth)/sign-up.tsx b/app/src/app/(auth)/sign-up.tsx index 433c9b2..3252ac4 100644 --- a/app/src/app/(auth)/sign-up.tsx +++ b/app/src/app/(auth)/sign-up.tsx @@ -9,6 +9,7 @@ import PrimaryButton from "@components/ui/PrimaryButton"; import { supabase } from "@utils/supabase"; import { createUserProfile, checkUsernameExists } from "@services/account-service"; +import { useSession } from "@contexts/SessionContext"; const back = require("@assets/left-arrow.png"); @@ -24,6 +25,7 @@ const signUpSchema = z.object({ export default function SignUp() { const router = useRouter(); + const { setUsername } = useSession(); const [form, setForm] = useState({ username: "", email: "", password: "", isCommuter: false }); const [loading, setLoading] = useState(false); @@ -74,6 +76,8 @@ export default function SignUp() { try { await createUserProfile(user.id, form.username, form.isCommuter); + // Update global session context so other components can see the new username right away + setUsername(form.username); Alert.alert("Sign-up successful!"); } catch (err) { let errorMessage = "An unknown error occurred."; diff --git a/app/src/app/(tabs)/account.tsx b/app/src/app/(tabs)/account.tsx index 0fb7e0e..c89bee6 100644 --- a/app/src/app/(tabs)/account.tsx +++ b/app/src/app/(tabs)/account.tsx @@ -1,5 +1,6 @@ import React from "react"; import { Text, SafeAreaView, View, Alert, ScrollView } from "react-native"; +import Constants from "expo-constants"; import { logoutUser } from "@services/account-service"; import { useSession } from "@contexts/SessionContext"; @@ -20,6 +21,9 @@ export default function Account() { const { user, username } = useSession(); const { userRole, points, joinedDate, loading } = useAccountDetails(user?.id); + const appVersion = + Constants.expoConfig?.version ?? (Constants?.manifest as any)?.version ?? "dev"; + async function handleLogout() { try { await logoutUser(); @@ -96,6 +100,7 @@ export default function Account() { )} + Version {appVersion}