rename openchat branding to chatbot on demo (#1421)

This commit is contained in:
dancer 2026-02-23 17:24:17 -08:00 committed by GitHub
parent 72597d6f68
commit e7ef7d8f9c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 161 additions and 127 deletions

View file

@ -41,9 +41,12 @@ export function AppSidebar({ user }: { user: User | undefined }) {
const [showDeleteAllDialog, setShowDeleteAllDialog] = useState(false);
const handleDeleteAll = () => {
const deletePromise = fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/history`, {
method: "DELETE",
});
const deletePromise = fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/history`,
{
method: "DELETE",
}
);
toast.promise(deletePromise, {
loading: "Deleting all chats...",
@ -72,7 +75,7 @@ export function AppSidebar({ user }: { user: User | undefined }) {
}}
>
<span className="cursor-pointer rounded-md px-2 font-semibold text-lg hover:bg-muted">
OpenChat
Chatbot
</span>
</Link>
<div className="flex flex-row gap-1">

View file

@ -149,14 +149,17 @@ function PureArtifact({
}
if (currentDocument.content !== updatedContent) {
await fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/document?id=${artifact.documentId}`, {
method: "POST",
body: JSON.stringify({
title: artifact.title,
content: updatedContent,
kind: artifact.kind,
}),
});
await fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/document?id=${artifact.documentId}`,
{
method: "POST",
body: JSON.stringify({
title: artifact.title,
content: updatedContent,
kind: artifact.kind,
}),
}
);
setIsContentDirty(false);

View file

@ -55,7 +55,7 @@ function PureChatHeader({
className="order-3 hidden bg-zinc-900 px-2 text-zinc-50 hover:bg-zinc-800 md:ml-auto md:flex md:h-fit dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-zinc-200"
>
<Link
href={"https://vercel.com/templates/next.js/openchat"}
href={"https://vercel.com/templates/next.js/chatbot"}
rel="noreferrer"
target="_noblank"
>

View file

@ -21,7 +21,7 @@ import { useArtifactSelector } from "@/hooks/use-artifact";
import { useAutoResume } from "@/hooks/use-auto-resume";
import { useChatVisibility } from "@/hooks/use-chat-visibility";
import type { Vote } from "@/lib/db/schema";
import { OpenChatError } from "@/lib/errors";
import { ChatbotError } from "@/lib/errors";
import type { Attachment, ChatMessage } from "@/lib/types";
import { fetcher, fetchWithErrorHandlers, generateUUID } from "@/lib/utils";
import { Artifact } from "./artifact";
@ -138,7 +138,7 @@ export function Chat({
mutate(unstable_serialize(getChatHistoryPaginationKey));
},
onError: (error) => {
if (error instanceof OpenChatError) {
if (error instanceof ChatbotError) {
if (
error.message?.includes("AI Gateway requires a valid credit card")
) {
@ -166,12 +166,18 @@ export function Chat({
});
setHasAppendedQuery(true);
window.history.replaceState({}, "", `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${id}`);
window.history.replaceState(
{},
"",
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${id}`
);
}
}, [query, sendMessage, hasAppendedQuery, id]);
const { data: votes } = useSWR<Vote[]>(
messages.length >= 2 ? `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote?chatId=${id}` : null,
messages.length >= 2
? `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote?chatId=${id}`
: null,
fetcher
);

View file

@ -77,14 +77,17 @@ export function PureMessageActions({
data-testid="message-upvote"
disabled={vote?.isUpvoted}
onClick={() => {
const upvote = fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote`, {
method: "PATCH",
body: JSON.stringify({
chatId,
messageId: message.id,
type: "up",
}),
});
const upvote = fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote`,
{
method: "PATCH",
body: JSON.stringify({
chatId,
messageId: message.id,
type: "up",
}),
}
);
toast.promise(upvote, {
loading: "Upvoting Response...",
@ -126,14 +129,17 @@ export function PureMessageActions({
data-testid="message-downvote"
disabled={vote && !vote.isUpvoted}
onClick={() => {
const downvote = fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote`, {
method: "PATCH",
body: JSON.stringify({
chatId,
messageId: message.id,
type: "down",
}),
});
const downvote = fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/vote`,
{
method: "PATCH",
body: JSON.stringify({
chatId,
messageId: message.id,
type: "down",
}),
}
);
toast.promise(downvote, {
loading: "Downvoting Response...",

View file

@ -145,7 +145,11 @@ function PureMultimodalInput({
const [uploadQueue, setUploadQueue] = useState<string[]>([]);
const submitForm = useCallback(() => {
window.history.pushState({}, "", `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${chatId}`);
window.history.pushState(
{},
"",
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${chatId}`
);
sendMessage({
role: "user",
@ -188,10 +192,13 @@ function PureMultimodalInput({
formData.append("file", file);
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/files/upload`, {
method: "POST",
body: formData,
});
const response = await fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/files/upload`,
{
method: "POST",
body: formData,
}
);
if (response.ok) {
const data = await response.json();

View file

@ -130,9 +130,12 @@ export function SidebarHistory({ user }: { user: User | undefined }) {
setShowDeleteDialog(false);
const deletePromise = fetch(`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/chat?id=${chatToDelete}`, {
method: "DELETE",
});
const deletePromise = fetch(
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/api/chat?id=${chatToDelete}`,
{
method: "DELETE",
}
);
toast.promise(deletePromise, {
loading: "Deleting chat...",

View file

@ -37,7 +37,11 @@ function PureSuggestedActions({ chatId, sendMessage }: SuggestedActionsProps) {
<Suggestion
className="h-auto w-full whitespace-normal p-3 text-left"
onClick={(suggestion) => {
window.history.pushState({}, "", `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${chatId}`);
window.history.pushState(
{},
"",
`${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}/chat/${chatId}`
);
sendMessage({
role: "user",
parts: [{ type: "text", text: suggestion }],