fix: support setting visibility on initial chat creation (#975)

This commit is contained in:
Jeremy 2025-05-01 17:47:48 -07:00 committed by GitHub
parent a3221fbcdc
commit 575c12503c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 158 additions and 32 deletions

View file

@ -49,7 +49,8 @@ export async function POST(request: Request) {
}
try {
const { id, message, selectedChatModel } = requestBody;
const { id, message, selectedChatModel, selectedVisibilityType } =
requestBody;
const session = await auth();
@ -80,7 +81,12 @@ export async function POST(request: Request) {
message,
});
await saveChat({ id, userId: session.user.id, title });
await saveChat({
id,
userId: session.user.id,
title,
visibility: selectedVisibilityType,
});
} else {
if (chat.userId !== session.user.id) {
return new Response('Forbidden', { status: 403 });
@ -236,7 +242,7 @@ export async function GET(request: Request) {
return new Response('Not found', { status: 404 });
}
if (chat.userId !== session.user.id) {
if (chat.visibility === 'private' && chat.userId !== session.user.id) {
return new Response('Forbidden', { status: 403 });
}

View file

@ -24,6 +24,7 @@ export const postRequestBodySchema = z.object({
.optional(),
}),
selectedChatModel: z.enum(['chat-model', 'chat-model-reasoning']),
selectedVisibilityType: z.enum(['public', 'private']),
});
export type PostRequestBody = z.infer<typeof postRequestBodySchema>;

View file

@ -60,8 +60,8 @@ export default async function Page(props: { params: Promise<{ id: string }> }) {
<Chat
id={chat.id}
initialMessages={convertToUIMessages(messagesFromDb)}
selectedChatModel={DEFAULT_CHAT_MODEL}
selectedVisibilityType={chat.visibility}
initialChatModel={DEFAULT_CHAT_MODEL}
initialVisibilityType={chat.visibility}
isReadonly={session?.user?.id !== chat.userId}
session={session}
autoResume={true}
@ -76,8 +76,8 @@ export default async function Page(props: { params: Promise<{ id: string }> }) {
<Chat
id={chat.id}
initialMessages={convertToUIMessages(messagesFromDb)}
selectedChatModel={chatModelFromCookie.value}
selectedVisibilityType={chat.visibility}
initialChatModel={chatModelFromCookie.value}
initialVisibilityType={chat.visibility}
isReadonly={session?.user?.id !== chat.userId}
session={session}
autoResume={true}

View file

@ -26,8 +26,8 @@ export default async function Page() {
key={id}
id={id}
initialMessages={[]}
selectedChatModel={DEFAULT_CHAT_MODEL}
selectedVisibilityType="private"
initialChatModel={DEFAULT_CHAT_MODEL}
initialVisibilityType="private"
isReadonly={false}
session={session}
autoResume={false}
@ -43,8 +43,8 @@ export default async function Page() {
key={id}
id={id}
initialMessages={[]}
selectedChatModel={modelIdFromCookie.value}
selectedVisibilityType="private"
initialChatModel={modelIdFromCookie.value}
initialVisibilityType="private"
isReadonly={false}
session={session}
autoResume={false}