From a067312f191219503a0e364bcd668799f41130d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreiro?= Date: Tue, 6 Dec 2022 10:30:04 +0000 Subject: [PATCH] save local photos on edit profile upload (wip) --- src/view/com/modals/EditProfile.tsx | 3 +- src/view/com/profile/ProfileHeader.tsx | 3 +- src/view/com/util/UserAvatar.tsx | 39 +++++++++++++++++++------- src/view/com/util/UserBanner.tsx | 36 ++++++++++++++++++------ 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/src/view/com/modals/EditProfile.tsx b/src/view/com/modals/EditProfile.tsx index 08ce5f350c..b330120664 100644 --- a/src/view/com/modals/EditProfile.tsx +++ b/src/view/com/modals/EditProfile.tsx @@ -70,10 +70,11 @@ export function Component({ Edit my profile - + - + (null) + const [userAvatarImage, setUserAvatarImage] = useState(null) + + useEffect(() => { + async function loadLocalImage() { + if (isMe) { + await loadString('userAvatarImage').then(uri => { + setUserAvatarImage(uri) + }) + } + } + loadLocalImage() + }, [isMe]) const handleEditAvatar = useCallback(() => { Alert.alert('Select upload method', '', [ @@ -39,7 +53,7 @@ export function UserAvatar({ height: 80, cropperCircleOverlay: true, }).then(item => { - setUploadedImage(item.path) + saveString('userAvatarImage', item.path) }) }, }, @@ -56,8 +70,7 @@ export function UserAvatar({ height: 80, cropperCircleOverlay: true, }).then(croppedItem => { - setUploadedImage(croppedItem.path) - console.log(croppedItem) + saveString('userAvatarImage', croppedItem.path) }) }) }, @@ -88,9 +101,9 @@ export function UserAvatar({ return isEditable && IMAGES_ENABLED ? ( - {/* Added a react state temporary photo white the protocol does not support imagery */} - {uploadedImage != null ? ( - + {/* Added a react state temporary photo while the protocol does not support imagery */} + {userAvatarImage != null ? ( + ) : ( renderSvg(size, initials) )} @@ -102,6 +115,12 @@ export function UserAvatar({ /> + ) : isMe && userAvatarImage != null ? ( + ) : ( renderSvg(size, initials) ) diff --git a/src/view/com/util/UserBanner.tsx b/src/view/com/util/UserBanner.tsx index 8212c049c3..8809d0b92f 100644 --- a/src/view/com/util/UserBanner.tsx +++ b/src/view/com/util/UserBanner.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useState} from 'react' +import React, {useCallback, useEffect, useState} from 'react' import {StyleSheet, View, TouchableOpacity, Alert, Image} from 'react-native' import Svg, {Rect, Defs, LinearGradient, Stop} from 'react-native-svg' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' @@ -10,17 +10,31 @@ import { openPicker, } from 'react-native-image-crop-picker' import {IMAGES_ENABLED} from '../../../build-flags' +import {saveString, loadString} from '../../../state/lib/storage' export function UserBanner({ handle, + isMe = false, isEditable = false, }: { handle: string + isMe?: boolean isEditable?: boolean }) { const gradient = getGradient(handle) - const [uploadedImage, setUploadedImage] = useState(null) + const [userBannerImage, setUserBannerImage] = useState(null) + + useEffect(() => { + async function loadLocalImage() { + if (isMe) { + await loadString('userBannerImage').then(uri => { + setUserBannerImage(uri) + }) + } + } + loadLocalImage() + }, [isMe]) const handleEditBanner = useCallback(() => { Alert.alert('Select upload method', '', [ @@ -33,8 +47,7 @@ export function UserBanner({ width: 1500, height: 500, }).then(item => { - setUploadedImage(item.path) - console.log(item) + saveString('userBannerImage', item.path) }) }, }, @@ -50,8 +63,7 @@ export function UserBanner({ width: 1500, height: 500, }).then(croppedItem => { - setUploadedImage(croppedItem.path) - console.log(croppedItem) + saveString('userBannerImage', croppedItem.path) }) }) }, @@ -78,12 +90,12 @@ export function UserBanner({ return isEditable && IMAGES_ENABLED ? ( - {/* Added a react state temporary photo white the protocol does not support imagery */} - {uploadedImage != null ? ( + {/* Added a react state temporary photo while the protocol does not support imagery */} + {userBannerImage != null ? ( ) : ( renderSvg() @@ -96,6 +108,12 @@ export function UserBanner({ /> + ) : isMe && userBannerImage != null ? ( + ) : ( renderSvg() )