import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {getTerminology} from '#/lib/strings/terminology' import {useTerminologyPreference} from '#/state/preferences' import {useRequireAuth} from '#/state/session' import {useSession} from '#/state/session' import {EventStopper} from '#/view/com/util/EventStopper' import {useTheme} from '#/alf' import {CloseQuote_Stroke2_Corner1_Rounded as Quote} from '#/components/icons/Quote' import {Repost_Stroke2_Corner2_Rounded as Repost} from '#/components/icons/Repost' import * as Menu from '#/components/Menu' import { PostControlButton, PostControlButtonIcon, PostControlButtonText, } from './PostControlButton' import {useFormatPostStatCount} from './util' interface Props { isReposted: boolean repostCount?: number onRepost: () => void onQuote: () => void big?: boolean embeddingDisabled: boolean } export const RepostButton = ({ isReposted, repostCount, onRepost, onQuote, big, embeddingDisabled, }: Props) => { const t = useTheme() const {_} = useLingui() const terminologyPreference = useTerminologyPreference() const {hasSession} = useSession() const requireAuth = useRequireAuth() const formatPostStatCount = useFormatPostStatCount() return hasSession ? ( {({props}) => { return ( {typeof repostCount !== 'undefined' && repostCount > 0 && ( {formatPostStatCount(repostCount)} )} ) }} {isReposted ? _(getTerminology(terminologyPreference, { skeet: msg`Undo reskeet`, post: msg`Undo repost`, spell: msg`Undo respell`, })) : _(getTerminology(terminologyPreference, { skeet: msg({message: `Reskeet`, context: `action`}), post: msg({message: `Repost`, context: `action`}), spell: msg({message: `Respell`, context: `action`}), }))} {embeddingDisabled ? _(getTerminology(terminologyPreference, { skeet: msg`Quote skeets disabled`, post: msg`Quote posts disabled`, spell: msg`Quote spells disabled`, })) : _(getTerminology(terminologyPreference, { skeet: msg`Quote skeet`, post: msg`Quote post`, spell: msg`Quote spell`, }))} ) : ( requireAuth(() => {})} active={isReposted} activeColor={t.palette.positive_500} label={_(getTerminology(terminologyPreference, { skeet: msg`Reskeet or quote skeet`, post: msg`Repost or quote post`, spell: msg`Respell or quote spell`, }))} big={big}> {typeof repostCount !== 'undefined' && repostCount > 0 && ( {formatPostStatCount(repostCount)} )} ) }