Port Profile Followers/Follows to RQ (#1893)

* Port user followers to RQ

* Port user follows to RQ

* Start porting FollowButton to RQ

* Fix RQ key

* Check pending

* Fix shadow and pending states

* Rm unused

* Remove last usage of useFollowProfile
This commit is contained in:
dan 2023-11-15 01:55:54 +00:00 committed by GitHub
parent d1cb74febe
commit e699df21c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 370 additions and 485 deletions

View file

@ -21,8 +21,10 @@ import {
getProfileModerationCauses,
getModerationCauseKey,
} from 'lib/moderation'
import {Shadow} from '#/state/cache/types'
import {useModerationOpts} from '#/state/queries/preferences'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useSession} from '#/state/session'
export function ProfileCard({
testID,
@ -40,7 +42,9 @@ export function ProfileCard({
noBg?: boolean
noBorder?: boolean
followers?: AppBskyActorDefs.ProfileView[] | undefined
renderButton?: (profile: AppBskyActorDefs.ProfileViewBasic) => React.ReactNode
renderButton?: (
profile: Shadow<AppBskyActorDefs.ProfileViewBasic>,
) => React.ReactNode
style?: StyleProp<ViewStyle>
}) {
const pal = usePalette('default')
@ -188,34 +192,37 @@ const FollowersList = observer(function FollowersListImpl({
)
})
export const ProfileCardWithFollowBtn = observer(
function ProfileCardWithFollowBtnImpl({
profile,
noBg,
noBorder,
followers,
}: {
profile: AppBskyActorDefs.ProfileViewBasic
noBg?: boolean
noBorder?: boolean
followers?: AppBskyActorDefs.ProfileView[] | undefined
}) {
const store = useStores()
const isMe = store.me.did === profile.did
export function ProfileCardWithFollowBtn({
profile,
noBg,
noBorder,
followers,
dataUpdatedAt,
}: {
profile: AppBskyActorDefs.ProfileViewBasic
noBg?: boolean
noBorder?: boolean
followers?: AppBskyActorDefs.ProfileView[] | undefined
dataUpdatedAt: number
}) {
const {currentAccount} = useSession()
const isMe = profile.did === currentAccount?.did
return (
<ProfileCard
profile={profile}
noBg={noBg}
noBorder={noBorder}
followers={followers}
renderButton={
isMe ? undefined : () => <FollowButton profile={profile} />
}
/>
)
},
)
return (
<ProfileCard
profile={profile}
noBg={noBg}
noBorder={noBorder}
followers={followers}
renderButton={
isMe
? undefined
: profileShadow => <FollowButton profile={profileShadow} />
}
dataUpdatedAt={dataUpdatedAt}
/>
)
}
const styles = StyleSheet.create({
outer: {