import React from 'react' import {View} from 'react-native' import {AppBskyActorDefs, moderateProfile} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {differenceInSeconds} from 'date-fns' import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' import {isNative} from '#/platform/detection' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {HITSLOP_10} from 'lib/constants' import {sanitizeDisplayName} from 'lib/strings/display-names' import {useSession} from 'state/session' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog' import {Newskie} from '#/components/icons/Newskie' import * as StarterPackCard from '#/components/StarterPack/StarterPackCard' import {Text} from '#/components/Typography' export function NewskieDialog({ profile, disabled, }: { profile: AppBskyActorDefs.ProfileViewDetailed disabled?: boolean }) { const {_} = useLingui() const t = useTheme() const moderationOpts = useModerationOpts() const {currentAccount} = useSession() const timeAgo = useGetTimeAgo() const control = useDialogControl() const isMe = profile.did === currentAccount?.did const createdAt = profile.createdAt as string | undefined const profileName = React.useMemo(() => { const name = profile.displayName || profile.handle if (isMe) { return _(msg`You`) } if (!moderationOpts) return name const moderation = moderateProfile(profile, moderationOpts) return sanitizeDisplayName(name, moderation.ui('displayName')) }, [_, isMe, moderationOpts, profile]) const [now] = React.useState(() => Date.now()) const daysOld = React.useMemo(() => { if (!createdAt) return Infinity return differenceInSeconds(now, new Date(createdAt)) / 86400 }, [createdAt, now]) if (!createdAt || daysOld > 7) return null return ( {isMe ? ( Welcome, friend! ) : ( Say hello! )} {profile.joinedViaStarterPack ? ( {profileName} joined Bluesky using a starter pack{' '} {timeAgo(createdAt, now, {format: 'long'})} ago ) : ( {profileName} joined Bluesky{' '} {timeAgo(createdAt, now, {format: 'long'})} ago )} {profile.joinedViaStarterPack ? ( { control.close() }}> ) : null} {isNative && ( )} ) }