Skip to main content
Glama
Southclaws

Storyden

by Southclaws
useInterfaceSettings.ts1.69 kB
import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { handle } from "@/api/client"; import { EditorModeSchema } from "@/lib/settings/editor"; import { useSettingsMutation } from "@/lib/settings/mutation"; import { Settings } from "@/lib/settings/settings"; import { SidebarDefaultStateSchema } from "@/lib/settings/sidebar"; export type Props = { settings: Settings; }; export const FormSchema = z.object({ editorMode: EditorModeSchema, sidebarDefaultState: SidebarDefaultStateSchema, }); export type Form = z.infer<typeof FormSchema>; export function useInterfaceSettings({ settings }: Props) { const { revalidate, updateSettings } = useSettingsMutation(settings); const form = useForm<Form>({ resolver: zodResolver(FormSchema), defaultValues: { editorMode: settings.metadata.editor.mode, sidebarDefaultState: settings.metadata.sidebar.defaultState, }, }); const onSubmit = form.handleSubmit(async (data) => { handle( async () => { await updateSettings({ metadata: { ...settings.metadata, editor: { mode: data.editorMode, }, sidebar: { defaultState: data.sidebarDefaultState, }, }, }); }, { promiseToast: { loading: "Saving settings...", success: "Settings saved", }, cleanup: async () => { await revalidate(); }, }, ); }); return { register: form.register, control: form.control, formState: form.formState, onSubmit, }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server