import { component$, $, useSignal } from '@builder.io/qwik' import { Link, useNavigate } from '@builder.io/qwik-city' import { formatTimeAgo } from '~/utils/dateTime' import type { Account, MastodonStatus } from '~/types' import { MediaGallery } from '../MediaGallery.tsx' import { useAccountUrl } from '~/utils/useAccountUrl' import { getDisplayNameElement } from '~/utils/getDisplayNameElement' import { StatusAccountCard } from '../StatusAccountCard/StatusAccountCard' import { HtmlContent } from '../HtmlContent/HtmlContent' import { StatusInfoTray } from '../StatusInfoTray/StatusInfoTray' type Props = { status: MastodonStatus accountSubText: 'username' | 'acct' showInfoTray: boolean contentClickable: boolean } export default component$((props: Props) => { const nav = useNavigate() const status = props.status.reblog ?? props.status const reblogger = props.status.reblog && props.status.account const accountUrl = useAccountUrl(status.account) const statusUrl = `${accountUrl}/${status.id}` const showContent = useSignal(!status.spoiler_text) const handleContentClick = $(() => props.contentClickable && nav(statusUrl)) return (
{formatTimeAgo(new Date(status.created_at))}
{status.spoiler_text && (
{status.spoiler_text}
)} {showContent.value && ( <>
{status.card && status.media_attachments.length === 0 && (
{status.card.title}
{status.card.provider_name}
)} )} {props.showInfoTray && }
) }) export const RebloggerLink = component$(({ account }: { account: Account | null }) => { const accountUrl = useAccountUrl(account) return ( account && (

{getDisplayNameElement(account)}  boosted

) ) })