From 2ec09ba54574f5e05f0bbec9c864dacd2092edd4 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Mon, 5 Sep 2022 16:57:20 -0500 Subject: Rework profile header --- src/view/com/profile/ProfileHeader.tsx | 177 ++++++++++++++++++++++++++------- src/view/com/util/Selector.tsx | 73 ++++++++++++++ src/view/index.ts | 2 + src/view/lib/assets.native.ts | 2 + src/view/lib/assets.ts | 2 + src/view/lib/styles.ts | 4 + 6 files changed, 222 insertions(+), 38 deletions(-) create mode 100644 src/view/com/util/Selector.tsx (limited to 'src') diff --git a/src/view/com/profile/ProfileHeader.tsx b/src/view/com/profile/ProfileHeader.tsx index 4ad84b32a..08d895554 100644 --- a/src/view/com/profile/ProfileHeader.tsx +++ b/src/view/com/profile/ProfileHeader.tsx @@ -2,19 +2,22 @@ import React, {useState, useEffect} from 'react' import {observer} from 'mobx-react-lite' import { ActivityIndicator, - Button, Image, StyleSheet, Text, TouchableOpacity, View, } from 'react-native' +import LinearGradient from 'react-native-linear-gradient' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {ProfileViewModel} from '../../../state/models/profile-view' import {useStores} from '../../../state' import {pluralize} from '../../lib/strings' -import {s, colors} from '../../lib/styles' -import {AVIS} from '../../lib/assets' +import {s, gradients, colors} from '../../lib/styles' +import {AVIS, BANNER} from '../../lib/assets' import Toast from '../util/Toast' +import {Link} from '../util/Link' +import {Selector, SelectorItem} from '../util/Selector' export const ProfileHeader = observer(function ProfileHeader({ user, @@ -35,6 +38,11 @@ export const ProfileHeader = observer(function ProfileHeader({ newView.setup().catch(err => console.error('Failed to fetch profile', err)) }, [user, view?.params.user, store]) + const selectorItems: SelectorItem[] = [ + {label: 'Posts', onSelect() {}}, + {label: 'Badges', onSelect() {}}, + ] + const onPressToggleFollow = () => { view?.toggleFollowing().then( () => { @@ -51,6 +59,12 @@ export const ProfileHeader = observer(function ProfileHeader({ err => console.error('Failed to toggle follow', err), ) } + const onPressEditProfile = () => { + // TODO + } + const onPressMenu = () => { + // TODO + } const onPressFollowers = () => { store.nav.navigate(`/profile/${user}/followers`) } @@ -84,40 +98,79 @@ export const ProfileHeader = observer(function ProfileHeader({ // loaded // = + const isMe = store.me.did === view.did return ( + - - {view.displayName} - @{view.name} - - {view.description && ( - {view.description} - )} - - - {view.followersCount} - - {pluralize(view.followersCount, 'follower')} - - - - {view.followsCount} - following - - - {view.postsCount} - {pluralize(view.postsCount, 'post')} + + + {view.displayName} + + + + + Employee @blueskyweb.xyz + + + + + {isMe ? ( + + Edit Profile + + ) : view.myState.hasFollowed ? ( + + Following + + ) : ( + + + + Follow + + + )} + + + + + + + {view.followersCount} + + {pluralize(view.followersCount, 'follower')} + + + + {view.followsCount} + following + + + {view.postsCount} + {pluralize(view.postsCount, 'post')} + + + {view.description && ( + {view.description} + )} - -