diff options
Diffstat (limited to 'src/view/com/profile/FollowButton.tsx')
-rw-r--r-- | src/view/com/profile/FollowButton.tsx | 94 |
1 files changed, 46 insertions, 48 deletions
diff --git a/src/view/com/profile/FollowButton.tsx b/src/view/com/profile/FollowButton.tsx index fcb2225da..6f6286e69 100644 --- a/src/view/com/profile/FollowButton.tsx +++ b/src/view/com/profile/FollowButton.tsx @@ -6,56 +6,54 @@ import {useStores} from 'state/index' import * as Toast from '../util/Toast' import {FollowState} from 'state/models/cache/my-follows' -export const FollowButton = observer( - ({ - unfollowedType = 'inverted', - followedType = 'default', - did, - onToggleFollow, - }: { - unfollowedType?: ButtonType - followedType?: ButtonType - did: string - onToggleFollow?: (v: boolean) => void - }) => { - const store = useStores() - const followState = store.me.follows.getFollowState(did) +export const FollowButton = observer(function FollowButtonImpl({ + unfollowedType = 'inverted', + followedType = 'default', + did, + onToggleFollow, +}: { + unfollowedType?: ButtonType + followedType?: ButtonType + did: string + onToggleFollow?: (v: boolean) => void +}) { + const store = useStores() + const followState = store.me.follows.getFollowState(did) - if (followState === FollowState.Unknown) { - return <View /> - } + if (followState === FollowState.Unknown) { + return <View /> + } - const onToggleFollowInner = async () => { - const updatedFollowState = await store.me.follows.fetchFollowState(did) - if (updatedFollowState === FollowState.Following) { - try { - await store.agent.deleteFollow(store.me.follows.getFollowUri(did)) - store.me.follows.removeFollow(did) - onToggleFollow?.(false) - } catch (e: any) { - store.log.error('Failed to delete follow', e) - Toast.show('An issue occurred, please try again.') - } - } else if (updatedFollowState === FollowState.NotFollowing) { - try { - const res = await store.agent.follow(did) - store.me.follows.addFollow(did, res.uri) - onToggleFollow?.(true) - } catch (e: any) { - store.log.error('Failed to create follow', e) - Toast.show('An issue occurred, please try again.') - } + const onToggleFollowInner = async () => { + const updatedFollowState = await store.me.follows.fetchFollowState(did) + if (updatedFollowState === FollowState.Following) { + try { + await store.agent.deleteFollow(store.me.follows.getFollowUri(did)) + store.me.follows.removeFollow(did) + onToggleFollow?.(false) + } catch (e: any) { + store.log.error('Failed to delete follow', e) + Toast.show('An issue occurred, please try again.') + } + } else if (updatedFollowState === FollowState.NotFollowing) { + try { + const res = await store.agent.follow(did) + store.me.follows.addFollow(did, res.uri) + onToggleFollow?.(true) + } catch (e: any) { + store.log.error('Failed to create follow', e) + Toast.show('An issue occurred, please try again.') } } + } - return ( - <Button - type={ - followState === FollowState.Following ? followedType : unfollowedType - } - onPress={onToggleFollowInner} - label={followState === FollowState.Following ? 'Unfollow' : 'Follow'} - /> - ) - }, -) + return ( + <Button + type={ + followState === FollowState.Following ? followedType : unfollowedType + } + onPress={onToggleFollowInner} + label={followState === FollowState.Following ? 'Unfollow' : 'Follow'} + /> + ) +}) |