import { ArrowLeft } from "lucide-react"; import { useEffect, useState } from "react"; import { api, errorMessage } from "../api"; import { MessageView } from "../components/MessageView"; import { Alert, Badge, EmptyRow, JsonBlock, LoadingSurface, PageFrame, SectionHead, Summary } from "../components/ui"; 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 [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")}> {"Back to group messages"}} >
{msg.Deleted ? {"Deleted"} : {"Live"}} {msg.Pinned && {"Pinned"}} {msg.Post && {"Channel post"}} } />
{"Stored rows (JSON)"}
{detail.UpdateEvents.map((row) => ( ))} {detail.UpdateEvents.length === 0 && }
PTS{"Count"}{"Type"}{"Message ID"}{"Sender"}{"Time"}
{row.PTS} {row.PTSCount} {row.Type} {row.MessageID} {row.SenderUserID} {formatUnix(row.Date)}
{detail.UpdateEvents.map((row) => ( ))} {detail.UpdateEvents.length === 0 &&
{"No results"}
}
); }