import React, { useState } from "react"; import { View, Text, StyleSheet, ScrollView, TouchableOpacity, Alert, ActivityIndicator, } from "react-native"; import { Stack, useRouter } from "expo-router"; import { Ionicons } from "@expo/vector-icons"; import { useUser } from "@clerk/clerk-expo"; import { useTheme } from "../contexts/ThemeContext"; import { MinimalCard } from "../components/MinimalCard"; import { Input } from "../components/Input"; import { MinimalButton } from "../components/MinimalButton"; export default function PersonalDetailsScreen() { const router = useRouter(); const { user } = useUser(); const { colors, typography } = useTheme(); const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ firstName: user?.firstName || "", lastName: user?.lastName || "", email: user?.primaryEmailAddress?.emailAddress || "", phone: user?.primaryPhoneNumber?.phoneNumber || "", }); const updateField = (field: "firstName" | "lastName", value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); }; const handleSave = async () => { setLoading(true); try { await user?.update({ firstName: formData.firstName, lastName: formData.lastName, }); Alert.alert("Success", "Personal details updated successfully", [ { text: "OK", onPress: () => router.back() }, ]); } catch { Alert.alert( "Error", "Failed to update personal details. Please try again.", ); } finally { setLoading(false); } }; return ( <> router.back()} activeOpacity={0.8} > Personal Details updateField("firstName", value)} placeholder="Enter first name" /> updateField("lastName", value)} placeholder="Enter last name" /> Email {formData.email || "Not set"} Read-only in app settings Phone Number {formData.phone || "Not set"} Read-only in app settings {loading ? ( ) : null} ); } const styles = StyleSheet.create({ container: { flex: 1, }, header: { paddingTop: 56, paddingBottom: 12, paddingHorizontal: 20, borderBottomWidth: 1, flexDirection: "row", alignItems: "center", justifyContent: "space-between", }, backButton: { width: 36, height: 36, borderRadius: 10, alignItems: "center", justifyContent: "center", }, backButtonPlaceholder: { width: 36, height: 36, }, content: { flex: 1, }, scrollContent: { padding: 20, paddingBottom: 80, }, card: { borderRadius: 16, }, readOnlyField: { marginTop: 8, marginBottom: 12, gap: 4, }, loadingRow: { marginTop: 16, alignItems: "center", }, });