import { ArrowLeft } from "lucide-react"; import { useEffect, useState } from "react"; import { api, errorMessage } from "../api"; import { Alert, Badge, EmptyRow, JsonBlock, LoadingSurface, PageFrame, SectionHead, Summary } from "../components/ui"; import { useI18n } from "../i18n"; import { formatUnix } from "../lib/format"; import type { Navigate } from "../routing"; import type { GroupMessageDetail } from "../types"; export function GroupMessageDetailPage({ channelID, msgID, navigate }: { channelID: number; msgID: number; navigate: Navigate }) { const { t } = useI18n(); const [detail, setDetail] = useState(null); const [error, setError] = useState(""); async function load() { setError(""); try { setDetail(await api.groupMessage(channelID, msgID)); } catch (err) { setError(errorMessage(err)); } } useEffect(() => { void load(); }, [channelID, msgID]); if (error) { return {error}; } if (!detail) { return ; } const msg = detail.Message; return ( navigate("/messages/groups")}> {t("messages.backGroup")}} >
{t("messages.channelGroupTitle", { id: msg.ChannelID })}
{t("messages.senderSubtitle", { sender: msg.SenderUserID, date: formatUnix(msg.Date) })}
{msg.Deleted ? {t("common.deleted")} : {t("common.survived")}} {msg.Pinned && {t("messages.pinned")}} {msg.Post && {t("messages.channelPost")}} pts {msg.PTS}
{detail.UpdateEvents.map((row) => ( ))} {detail.UpdateEvents.length === 0 && }
PTS{t("common.count")}{t("common.type")}{t("common.messageId")}{t("common.sender")}{t("common.time")}
{row.PTS} {row.PTSCount} {row.Type} {row.MessageID} {row.SenderUserID} {formatUnix(row.Date)}
{detail.UpdateEvents.map((row) => ( ))} {detail.UpdateEvents.length === 0 &&
{t("common.noResults")}
}
); }