import type { Chain } from "@/entities/chain/schema"; import { useChainState } from "@/entities/chain/model"; import { useNavigate } from "@tanstack/react-router"; import { useState, useRef } from "react"; import humanizeDuration from "humanize-duration"; import { upsertChain } from "@/entities/chain/api/upsert"; import { ActionEditor } from "@/widgets/action-editor"; import { RenameChainButton } from "@/features/rename-chain"; import { DeleteChainButton } from "@/features/delete-chain"; import { Typography, Button } from "@mui/material"; import Breadcrumbs from "@mui/material/Breadcrumbs"; import SettingsIcon from "@mui/icons-material/Settings"; interface ChainEditorProps { chain: Chain; } export default function ChainEditor({ chain }: ChainEditorProps) { const actionsListRef = useRef(null); const [addingNewAction, setAddingNewAction] = useState(false); const navigate = useNavigate({ from: "/$namespace/$chainId" }); const addCommentAction = useChainState((state) => state.addCommentAction); if (!chain.actions || chain.actions.length === 0 || addingNewAction) return (
{chain.name} Новый пост
{ addCommentAction(chain._id!, action); await upsertChain(chain); if (addingNewAction) setAddingNewAction(false); navigate({ to: "/$namespace/$chainId" }); setTimeout( () => actionsListRef.current?.scrollTo({ behavior: "smooth", top: actionsListRef.current.scrollHeight, }), 0, ); }} onClose={() => { if (addingNewAction) setAddingNewAction(false); }} canExit={addingNewAction} />
); return (
{chain.name}
{chain.actions.map((action, index) => { if (action.actionType === "comment") return (
{action.text}
); return (
Ожидание:{" "} {humanizeDuration(action.waitFor * 1000, { language: "ru" })}
); })}
); }