feat: implement base template support

This commit is contained in:
2024-11-30 20:28:26 +00:00
parent 5718cc1c51
commit 39469230a3
8 changed files with 284 additions and 133 deletions

View File

@@ -1,6 +1,11 @@
import { useCallback, useState } from "react";
import useSWR, { useSWRConfig } from "swr";
import type { Template, TemplateMeta, TemplateImage } from "./types";
import type {
Template,
TemplateMeta,
TemplateImage,
BaseTemplate,
} from "./types";
import { fetchApi } from "@/api";
function useTemplates() {
@@ -47,11 +52,16 @@ function useCreateTemplate() {
async ({
name,
description,
}: { name: string; description: string }): Promise<Template | null> => {
baseTemplate,
}: {
name: string;
description: string;
baseTemplate: string;
}): Promise<Template | null> => {
try {
const res = await fetchApi(`/templates/${name}`, {
method: "POST",
body: JSON.stringify({ description }),
body: JSON.stringify({ description, baseTemplate }),
headers: {
"Content-Type": "application/json",
},
@@ -150,6 +160,14 @@ function useTemplateImages() {
);
}
function useBaseTemplates() {
return useSWR(
"/base-templates",
(): Promise<BaseTemplate[]> =>
fetchApi("/base-templates").then((res) => res.json()),
);
}
export {
useTemplates,
useTemplate,
@@ -159,4 +177,5 @@ export {
buildTemplate,
useDeleteTemplate,
useTemplateImages,
useBaseTemplates,
};