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)}
)}
)
}