fix: support setting visibility on initial chat creation (#975)
This commit is contained in:
parent
a3221fbcdc
commit
575c12503c
15 changed files with 158 additions and 32 deletions
|
|
@ -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 });
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue