| import { base } from "$app/paths"; |
| import { collections } from "$lib/server/database"; |
| import { redirect } from "@sveltejs/kit"; |
| import { z } from "zod"; |
| import { models, validateModel } from "$lib/server/models"; |
| import { authCondition } from "$lib/server/auth"; |
| import { DEFAULT_SETTINGS } from "$lib/types/Settings"; |
|
|
| export const actions = { |
| default: async function ({ request, locals }) { |
| const formData = await request.formData(); |
|
|
| const { ethicsModalAccepted, ...settings } = z |
| .object({ |
| shareConversationsWithModelAuthors: z |
| .union([z.literal("true"), z.literal("on"), z.literal("false"), z.null()]) |
| .transform((value) => { |
| return value === "true" || value === "on"; |
| }), |
| ethicsModalAccepted: z.boolean({ coerce: true }).optional(), |
| activeModel: validateModel(models), |
| customPrompts: z.record(z.string()).default({}), |
| }) |
| .parse({ |
| shareConversationsWithModelAuthors: formData.get("shareConversationsWithModelAuthors"), |
| ethicsModalAccepted: formData.get("ethicsModalAccepted"), |
| activeModel: formData.get("activeModel") ?? DEFAULT_SETTINGS.activeModel, |
| customPrompts: JSON.parse(formData.get("customPrompts")?.toString() ?? "{}"), |
| }); |
|
|
| throw redirect(303, request.headers.get("referer") || `${base}/`); |
| }, |
| }; |
|
|