forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {View} from 'react-native'
2import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api'
3
4import {sanitizeDisplayName} from '#/lib/strings/display-names'
5import {sanitizeHandle} from '#/lib/strings/handles'
6import {type Shadow} from '#/state/cache/types'
7import {atoms as a, platform, useBreakpoints, useTheme} from '#/alf'
8import {PdsBadge} from '#/components/PdsBadge'
9import {Text} from '#/components/Typography'
10import {VerificationCheckButton} from '#/components/verification/VerificationCheckButton'
11
12export function ProfileHeaderDisplayName({
13 profile,
14 moderation,
15}: {
16 profile: Shadow<AppBskyActorDefs.ProfileViewDetailed>
17 moderation: ModerationDecision
18}) {
19 const t = useTheme()
20 const {gtMobile} = useBreakpoints()
21
22 return (
23 <View>
24 <Text
25 emoji
26 testID="profileHeaderDisplayName"
27 style={[
28 t.atoms.text,
29 gtMobile ? a.text_4xl : a.text_3xl,
30 a.self_start,
31 a.font_bold,
32 ]}>
33 {sanitizeDisplayName(
34 profile.displayName || sanitizeHandle(profile.handle),
35 moderation.ui('displayName'),
36 )}
37 <View
38 style={[
39 a.pl_xs,
40 a.flex_row,
41 a.gap_2xs,
42 a.align_center,
43 {
44 marginTop: platform({ios: 2}),
45 },
46 ]}>
47 <PdsBadge did={profile.did} size="lg" />
48 <VerificationCheckButton profile={profile} size="lg" />
49 </View>
50 </Text>
51 </View>
52 )
53}