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 {ProfileBadges} from '#/components/ProfileBadges'
9import {Text} from '#/components/Typography'
10
11export function ProfileHeaderDisplayName({
12 profile,
13 moderation,
14}: {
15 profile: Shadow<AppBskyActorDefs.ProfileViewDetailed>
16 moderation: ModerationDecision
17}) {
18 const t = useTheme()
19 const {gtMobile} = useBreakpoints()
20
21 return (
22 <View>
23 <Text
24 emoji
25 testID="profileHeaderDisplayName"
26 style={[
27 t.atoms.text,
28 gtMobile ? a.text_4xl : a.text_3xl,
29 a.self_start,
30 a.font_bold,
31 ]}>
32 {sanitizeDisplayName(
33 profile.displayName || sanitizeHandle(profile.handle),
34 moderation.ui('displayName'),
35 )}
36 <View
37 style={[
38 a.pl_xs,
39 a.flex_row,
40 a.gap_2xs,
41 a.align_center,
42 {
43 marginTop: platform({ios: 2}),
44 },
45 ]}>
46 <ProfileBadges profile={profile} size="lg" interactive />
47 </View>
48 </Text>
49 </View>
50 )
51}