2025-06-11 00:14:17 +02:00
|
|
|
import { LocalMessageNode } from '@colanode/client/types';
|
2025-11-11 07:00:14 -08:00
|
|
|
import { Breadcrumb } from '@colanode/ui/components/workspaces/breadcrumbs/breadcrumb';
|
2025-06-11 00:14:17 +02:00
|
|
|
import { Message } from '@colanode/ui/components/messages/message';
|
|
|
|
|
import { MessageNotFound } from '@colanode/ui/components/messages/message-not-found';
|
2025-11-11 07:00:14 -08:00
|
|
|
import { NodeBreadcrumb } from '@colanode/ui/components/nodes/node-breadcrumb';
|
2025-06-11 00:14:17 +02:00
|
|
|
import { ConversationContext } from '@colanode/ui/contexts/conversation';
|
|
|
|
|
import { useNodeContainer } from '@colanode/ui/hooks/use-node-container';
|
|
|
|
|
import { useNodeRadar } from '@colanode/ui/hooks/use-node-radar';
|
2025-02-19 19:11:46 +01:00
|
|
|
|
|
|
|
|
interface MessageContainerProps {
|
|
|
|
|
messageId: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const MessageContainer = ({ messageId }: MessageContainerProps) => {
|
|
|
|
|
const data = useNodeContainer<LocalMessageNode>(messageId);
|
|
|
|
|
|
|
|
|
|
useNodeRadar(data.node);
|
|
|
|
|
|
|
|
|
|
if (data.isPending) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!data.node) {
|
|
|
|
|
return <MessageNotFound />;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
2025-11-11 07:00:14 -08:00
|
|
|
<>
|
|
|
|
|
<Breadcrumb>
|
|
|
|
|
<NodeBreadcrumb breadcrumb={data.breadcrumb} />
|
|
|
|
|
</Breadcrumb>
|
|
|
|
|
<ConversationContext.Provider
|
|
|
|
|
value={{
|
|
|
|
|
id: data.node.id,
|
|
|
|
|
role: data.role,
|
|
|
|
|
rootId: data.node.rootId,
|
|
|
|
|
canCreateMessage: true,
|
|
|
|
|
onReply: () => {},
|
|
|
|
|
onLastMessageIdChange: () => {},
|
|
|
|
|
canDeleteMessage: () => false,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<Message message={data.node} />
|
|
|
|
|
</ConversationContext.Provider>
|
|
|
|
|
</>
|
2025-02-19 19:11:46 +01:00
|
|
|
);
|
|
|
|
|
};
|