core/apps/webapp/app/components/conversation/conversation-item.client.tsx
Harshith Mullapudi 038acea669
Feat: added integration connect and mcp oAuth (#20)
* Feat: added integration connect and mcp oAuth

* Feat: add mcp support to chat

* Fix: UI for integrations and logs

* Fix: ui

* Fix: proxy server

* Feat: enhance MCP tool integration and loading functionality

* Fix: added header

* Fix: Linear integration sync

---------

Co-authored-by: Manoj K <saimanoj58@gmail.com>
2025-07-17 12:41:32 +05:30

52 lines
1.4 KiB
TypeScript

import { EditorContent, useEditor } from "@tiptap/react";
import { useEffect } from "react";
import { UserTypeEnum } from "@core/types";
import { type ConversationHistory } from "@core/database";
import { cn } from "~/lib/utils";
import { extensionsForConversation } from "./editor-extensions";
import { skillExtension } from "../editor/skill-extension";
interface AIConversationItemProps {
conversationHistory: ConversationHistory;
}
export const ConversationItem = ({
conversationHistory,
}: AIConversationItemProps) => {
const isUser =
conversationHistory.userType === UserTypeEnum.User ||
conversationHistory.userType === UserTypeEnum.System;
const id = `a${conversationHistory.id.replace(/-/g, "")}`;
const editor = useEditor({
extensions: [...extensionsForConversation, skillExtension],
editable: false,
content: conversationHistory.message,
});
useEffect(() => {
editor?.commands.setContent(conversationHistory.message);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [id, conversationHistory.message]);
if (!conversationHistory.message) {
return null;
}
return (
<div className={cn("flex gap-2 px-4 pb-2", isUser && "my-4 justify-end")}>
<div
className={cn(
"flex flex-col",
isUser && "bg-primary/20 max-w-[500px] rounded-md p-3",
)}
>
<EditorContent editor={editor} className="editor-container" />
</div>
</div>
);
};