import {plural} from '@lingui/core/macro' import {useLingui} from '@lingui/react/macro' import {type CountsMetricsDisplay} from '#/lib/metrics-display' import {useRequireAuth, 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, RepostRepost_Stroke2_Corner2_Rounded as BumpRepostIcon, } from '#/components/icons/Repost' import * as Menu from '#/components/Menu' import {usePostKeyboardActions} from '#/features/keyboardShortcuts/postActions.web' import {MetricCountLabel} from './MetricCountLabel' import {PostControlButton, PostControlButtonIcon} from './PostControlButton' interface Props { isReposted: boolean repostCount?: number metricsDisplay?: CountsMetricsDisplay onRepost: () => void onBumpRepost: () => void onQuote: (openAccountSwitcher?: boolean) => void onLongPress?: () => void big?: boolean embeddingDisabled: boolean } export const RepostButton = ({ isReposted, repostCount, metricsDisplay = 'visible', onRepost, onBumpRepost, onQuote, onLongPress, big, embeddingDisabled, }: Props) => { const t = useTheme() const {t: l} = useLingui() const {hasSession} = useSession() const requireAuth = useRequireAuth() const keyboardActionsRef = usePostKeyboardActions({ onRepost, onQuote, embeddingDisabled, enabled: hasSession, }) return hasSession ? (
{({props}) => { return ( {typeof repostCount !== 'undefined' ? ( ) : null} ) }} {isReposted ? l`Undo repost` : l({message: `Repost`, context: `action`})} {isReposted && ( {l`Bump repost`} )} onQuote()}> {embeddingDisabled ? l`Quote posts disabled` : l`Quote post`}
) : ( requireAuth(() => {})} active={isReposted} activeColor={t.palette.positive_500} label={l`Repost or quote post`} big={big}> {typeof repostCount !== 'undefined' ? ( ) : null} ) }