Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export default tseslint.config(
],

// Disable the base ESLint rule as @typescript-eslint/no-unused-vars handles it better
"no-unused-vars": "warn",
"no-unused-vars": "off",

// Prevent unused imports (catches imports that are never used)
"no-unused-private-class-members": "error"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,10 @@ export type AudioMessage = MessageBase & {
duration: number;
};

export type ChatMessage = TextMessage | CardMessage | QuickRepliesMessage | SystemMessage | AudioMessage;
export type ImageMessage = MessageBase & {
type: "image";
imageUrl: string;
caption?: string;
};

export type ChatMessage = TextMessage | CardMessage | QuickRepliesMessage | SystemMessage | AudioMessage | ImageMessage;
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import { SystemBubble } from "./system-bubble";
import { TextBubble } from "./text-bubble";
import { MessageChrome } from "../message-chrome";

/* eslint-disable no-unused-vars */
type BubbleProps = { message: ChatMessage; onQuickReply?: (payload: string) => void };
/* eslint-enable no-unused-vars */

export function Bubble({ message }: BubbleProps) {

Expand Down Expand Up @@ -45,6 +43,21 @@ export function Bubble({ message }: BubbleProps) {
<AudioBubble message={message} isMine={message.role === "user"} />
</MessageChrome>
);
case "image":
return (
<MessageChrome role={message.role}>
<div className="max-w-xs sm:max-w-sm">
<img
src={message.imageUrl}
alt={message.caption || "Uploaded image"}
className="rounded-lg object-cover max-h-64 w-full"
/>
{message.caption && (
<p className="mt-1 text-sm text-muted-foreground">{message.caption}</p>
)}
</div>
</MessageChrome>
);
default:
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { Button } from "@/components/ui/button";
import { QuickRepliesMessage } from "./chat-types";

/* eslint-disable no-unused-vars */
type QuickRepliesBubbleProps = {
message: QuickRepliesMessage;
onQuickReply?: (payload: string) => void;
};
/* eslint-enable no-unused-vars */

export function QuickRepliesBubble(props: QuickRepliesBubbleProps) {
const { message, onQuickReply } = props;
Expand Down
Loading
Loading