Gracefully handle backend failures in Expo app

This commit is contained in:
Adolfo Reyna
2026-02-20 19:25:38 -05:00
parent fe9fc8e3e4
commit 009f1ec792
14 changed files with 205 additions and 97 deletions

View File

@@ -16,13 +16,14 @@ import * as ImagePicker from 'expo-image-picker';
let ProfileSettings = () => {
const gState = useSnapshot(GlobalState);
const viewer = gState.me;
const viewerProfile = viewer?.profile || {};
const [photo, setPhoto] = React.useState(null);
const [name, setName] = React.useState(viewer.profile.firstName);
const [lastName, setLastName] = React.useState(viewer.profile.lastName);
const [photoUrl, setphotoUrl] = React.useState(viewer.profile.photo);
const [language, setLanguage] = React.useState(viewer.profile.language);
const [name, setName] = React.useState(viewerProfile.firstName || "");
const [lastName, setLastName] = React.useState(viewerProfile.lastName || "");
const [photoUrl, setphotoUrl] = React.useState(viewerProfile.photo || "");
const [language, setLanguage] = React.useState(viewerProfile.language || "en");
const [updateKey, setUpdateKey] = React.useState(0);
const [description, setDescription] = React.useState(viewer.profile.description);
const [description, setDescription] = React.useState(viewerProfile.description || "");
const [uploading, setUploading] = React.useState(false);
const pickImage = async () => {
@@ -41,6 +42,7 @@ let ProfileSettings = () => {
let newPhotoURL = await handleUploadPhoto(result.assets[0]);
if (newPhotoURL !== "") {
setphotoUrl(newPhotoURL);
if (!GlobalState.me.profile) GlobalState.me.profile = {};
GlobalState.me.profile.photo = newPhotoURL;
updateProfile()
setUpdateKey(updateKey + 1);
@@ -90,9 +92,9 @@ let ProfileSettings = () => {
};
let updateProfile = async () => {
let currentProfile = await API.getUserProfile(viewer._id)
currentData = currentProfile.data;
currentProfile = currentProfile.profile;
let currentProfile = await API.getUserProfile(viewer?._id);
const currentData = currentProfile?.data || {};
currentProfile = currentProfile?.profile || {};
try {
//let currentProfile = JSON.parse(JSON.stringify(viewer.profile));
currentProfile.firstName = name;
@@ -204,4 +206,4 @@ let ProfileSettings = () => {
)
}
export default ProfileSettings;
export default ProfileSettings;