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}