about summary refs log tree commit diff
path: root/src/view/com/profile/FollowButton.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/profile/FollowButton.tsx')
-rw-r--r--src/view/com/profile/FollowButton.tsx94
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'}
+    />
+  )
+})