| import { base } from "$app/paths"; | |
| import { collections } from "$lib/server/database"; | |
| import { redirect } from "@sveltejs/kit"; | |
| import { z } from "zod"; | |
| import { defaultModel, models, validateModel } from "$lib/server/models"; | |
| import { authCondition } from "$lib/server/auth"; | |
| export const actions = { | |
| default: async function ({ request, locals }) { | |
| const formData = await request.formData(); | |
| const { ethicsModalAccepted, ...settings } = z | |
| .object({ | |
| shareConversationsWithModelAuthors: z.boolean({ coerce: true }).default(true), | |
| ethicsModalAccepted: z.boolean({ coerce: true }).optional(), | |
| activeModel: validateModel(models), | |
| }) | |
| .parse({ | |
| shareConversationsWithModelAuthors: formData.get("shareConversationsWithModelAuthors"), | |
| ethicsModalAccepted: formData.get("ethicsModalAccepted"), | |
| activeModel: formData.get("activeModel") ?? defaultModel.id, | |
| }); | |
| await collections.settings.updateOne( | |
| authCondition(locals), | |
| { | |
| $set: { | |
| ...settings, | |
| ...(ethicsModalAccepted && { ethicsModalAcceptedAt: new Date() }), | |
| updatedAt: new Date(), | |
| }, | |
| $setOnInsert: { | |
| createdAt: new Date(), | |
| }, | |
| }, | |
| { | |
| upsert: true, | |
| } | |
| ); | |
| throw redirect(303, request.headers.get("referer") || base || "/"); | |
| }, | |
| }; | |