Path: blob/master/src/packages/frontend/chat/viewer.tsx
1496 views
/*1Used for viewing a list of messages, e.g., in timetravel.2*/34import { Map as immutableMap } from "immutable";5import { useMemo } from "react";67import type { Document } from "@cocalc/sync/editor/generic/types";8import { useTypedRedux } from "@cocalc/frontend/app-framework";9import { MessageList, getSortedDates } from "./chat-log";10import type { ChatMessages } from "./types";1112export default function Viewer({13doc,14font_size,15}: {16doc: Document;17font_size?: number;18}) {19const messages = useMemo<ChatMessages>(() => {20let m = immutableMap();21for (let v of doc.get()) {22if (v.get("event") == "chat") {23const date = new Date(v.get("date"));24v = v.set("date", date);25m = m.set(`${date.valueOf()}`, v);26}27}28return m as ChatMessages;29}, [doc]);30const user_map = useTypedRedux("users", "user_map");31const account_id = useTypedRedux("account", "account_id");32const { dates: sortedDates, numChildren } = useMemo(() => {33return getSortedDates(messages, "", account_id, undefined);34}, [messages]);3536return (37<MessageList38messages={messages}39user_map={user_map}40account_id={account_id}41fontSize={font_size}42mode="standalone"43sortedDates={sortedDates}44numChildren={numChildren}45/>46);47}484950