diff options
Diffstat (limited to 'src/components/dms/MessagesListHeader.tsx')
-rw-r--r-- | src/components/dms/MessagesListHeader.tsx | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/components/dms/MessagesListHeader.tsx b/src/components/dms/MessagesListHeader.tsx index 6ac64a712..f8d9b290d 100644 --- a/src/components/dms/MessagesListHeader.tsx +++ b/src/components/dms/MessagesListHeader.tsx @@ -15,7 +15,7 @@ import {makeProfileLink} from '#/lib/routes/links' import {NavigationProp} from '#/lib/routes/types' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {isWeb} from '#/platform/detection' -import {useProfileShadow} from '#/state/cache/profile-shadow' +import {Shadow} from '#/state/cache/profile-shadow' import {isConvoActive, useConvo} from '#/state/messages/convo' import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' @@ -30,20 +30,27 @@ const PFP_SIZE = isWeb ? 40 : 34 export let MessagesListHeader = ({ profile, moderation, - blockInfo, }: { - profile?: AppBskyActorDefs.ProfileViewBasic + profile?: Shadow<AppBskyActorDefs.ProfileViewBasic> moderation?: ModerationDecision - blockInfo?: { - listBlocks: ModerationCause[] - userBlock?: ModerationCause - } }): React.ReactNode => { const t = useTheme() const {_} = useLingui() const {gtTablet} = useBreakpoints() const navigation = useNavigation<NavigationProp>() + const blockInfo = React.useMemo(() => { + if (!moderation) return + const modui = moderation.ui('profileView') + const blocks = modui.alerts.filter(alert => alert.type === 'blocking') + const listBlocks = blocks.filter(alert => alert.source.type === 'list') + const userBlock = blocks.find(alert => alert.source.type === 'user') + return { + listBlocks, + userBlock, + } + }, [moderation]) + const onPressBack = useCallback(() => { if (isWeb) { navigation.replace('Messages', {}) @@ -127,11 +134,11 @@ export let MessagesListHeader = ({ MessagesListHeader = React.memo(MessagesListHeader) function HeaderReady({ - profile: profileUnshadowed, + profile, moderation, blockInfo, }: { - profile: AppBskyActorDefs.ProfileViewBasic + profile: Shadow<AppBskyActorDefs.ProfileViewBasic> moderation: ModerationDecision blockInfo: { listBlocks: ModerationCause[] @@ -141,7 +148,6 @@ function HeaderReady({ const {_} = useLingui() const t = useTheme() const convoState = useConvo() - const profile = useProfileShadow(profileUnshadowed) const isDeletedAccount = profile?.handle === 'missing.invalid' const displayName = isDeletedAccount |