Gracefully handle backend failures in Expo app
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user