about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-16 13:32:10 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-16 13:32:10 -0600
commitfec1589f7c3501689e280023d3606d6b89988a3b (patch)
treebc6ff1d066043e3c38be0a8d5da9aa82c9363da0
parente9102bcbac1a720060456436bee524171a1d66f1 (diff)
downloadvoidsky-fec1589f7c3501689e280023d3606d6b89988a3b.tar.zst
Nicer loading state for profiles
-rw-r--r--src/view/com/profile/ProfileHeader.tsx46
1 files changed, 43 insertions, 3 deletions
diff --git a/src/view/com/profile/ProfileHeader.tsx b/src/view/com/profile/ProfileHeader.tsx
index 7292deda3..5a3743763 100644
--- a/src/view/com/profile/ProfileHeader.tsx
+++ b/src/view/com/profile/ProfileHeader.tsx
@@ -22,6 +22,7 @@ import {s, colors} from '../../lib/styles'
 import {getGradient} from '../../lib/asset-gen'
 import {DropdownBtn, DropdownItem} from '../util/DropdownBtn'
 import Toast from '../util/Toast'
+import {LoadingPlaceholder} from '../util/LoadingPlaceholder'
 import {UserAvatar} from '../util/UserAvatar'
 import {UserBanner} from '../util/UserBanner'
 import {UserInfoText} from '../util/UserInfoText'
@@ -103,10 +104,49 @@ export const ProfileHeader = observer(function ProfileHeader({
 
   // loading
   // =
-  if (!view || (view.isLoading && !view.isRefreshing)) {
+  if (!view || !view.hasLoaded) {
     return (
-      <View>
-        <ActivityIndicator />
+      <View style={styles.outer}>
+        <LoadingPlaceholder width="100%" height={120} />
+        {store.nav.tab.canGoBack ? (
+          <TouchableOpacity style={styles.backButton} onPress={onPressBack}>
+            <FontAwesomeIcon
+              size={18}
+              icon="angle-left"
+              style={styles.backIcon}
+            />
+          </TouchableOpacity>
+        ) : undefined}
+        {store.me.did ? (
+          <TouchableOpacity style={styles.myAvatar} onPress={onPressMyAvatar}>
+            <UserAvatar
+              size={30}
+              handle={store.me.handle || ''}
+              displayName={store.me.displayName}
+            />
+          </TouchableOpacity>
+        ) : undefined}
+        <View style={styles.avi}>
+          <LoadingPlaceholder
+            width={80}
+            height={80}
+            style={{borderRadius: 40}}
+          />
+        </View>
+        <View style={styles.content}>
+          <View style={[styles.buttonsLine]}>
+            <LoadingPlaceholder
+              width={100}
+              height={31}
+              style={{borderRadius: 50}}
+            />
+          </View>
+          <View style={styles.displayNameLine}>
+            <Text style={styles.displayName}>
+              {view.displayName || view.handle}
+            </Text>
+          </View>
+        </View>
       </View>
     )
   }