import { useState } from "react"; import { HubConnectionState } from "@microsoft/signalr"; import { useUser } from "@/services/user"; import { pushAlert } from "@/services/alert"; import { HttpTimelineInfo } from "@/http/timeline"; import { getHttpBookmarkClient } from "@/http/bookmark"; import { useMobile } from "@/views/common/common"; import { useDialog } from "@/views/common/dialog"; import UserAvatar from "@/views/common/user/UserAvatar"; import PopupMenu from "@/views/common/menu/PopupMenu"; import FullPageDialog from "@/views/common/dialog/FullPageDialog"; import Card from "@/views/common/Card"; import TimelineDeleteDialog from "./TimelineDeleteDialog"; import ConnectionStatusBadge from "./ConnectionStatusBadge"; import CollapseButton from "./CollapseButton"; import { TimelineMemberDialog } from "./TimelineMember"; import TimelinePropertyChangeDialog from "./TimelinePropertyChangeDialog"; import IconButton from "@/views/common/button/IconButton"; import "./TimelineCard.css"; interface TimelinePageCardProps { timeline: HttpTimelineInfo; connectionStatus: HubConnectionState; onReload: () => void; } export default function TimelineCard(props: TimelinePageCardProps) { const { timeline, connectionStatus, onReload } = props; const user = useUser(); const [collapse, setCollapse] = useState(true); const toggleCollapse = (): void => { setCollapse((o) => !o); }; const isMobile = useMobile(); const { createDialogSwitch, dialogPropsMap } = useDialog([ "member", "property", "delete", ]); const content = (
{timeline.description}