fix: template defects

This commit is contained in:
h z
2025-04-17 21:44:45 +01:00
parent 947b59e3ea
commit 137ea649f8
20 changed files with 323 additions and 280 deletions

View File

@@ -1,7 +1,7 @@
import React, { useContext, useState } from "react";
import { AuthContext } from "../../AuthProvider";
import { useNavigate, useParams } from "react-router-dom";
import { useMarkdownTemplate, useSaveMarkdownTemplate } from "../../utils/queries/template-queries";
import { useMarkdownTemplate, useSaveMarkdownTemplate } from "../../utils/queries/markdown-template-queries";
import LayoutEditor from "./LayoutEditor";
import ParametersManager from "./ParametersManager";
import "bulma/css/bulma.min.css";

View File

@@ -1,5 +1,5 @@
import React, {useState} from "react";
import {useMarkdownTemplates} from "../../utils/queries/template-queries";
import {useMarkdownTemplates} from "../../utils/queries/markdown-template-queries";
const TemplateSelector = ({template, onChange}) => {
const [_template, setTemplate] = useState(template || {

View File

@@ -6,8 +6,8 @@ import MarkdownView from "./MarkdownView";
import PermissionGuard from "../PermissionGuard";
import {useMarkdown} from "../../utils/queries/markdown-queries";
import {usePath} from "../../utils/queries/path-queries";
import {useMarkdownSetting} from "../../utils/queries/setting-queries";
import {useMarkdownTemplate} from "../../utils/queries/template-queries";
import {useMarkdownSetting} from "../../utils/queries/markdown-setting-queries";
import {useMarkdownTemplate} from "../../utils/queries/markdown-template-queries";
const MarkdownContent = () => {
const { id } = useParams();

View File

@@ -6,9 +6,10 @@ import "./MarkdownEditor.css";
import PathManager from "../PathManager";
import MarkdownView from "./MarkdownView";
import { useMarkdown, useSaveMarkdown } from "../../utils/queries/markdown-queries";
import {useMarkdownSetting} from "../../utils/queries/setting-queries";
import {useMarkdownTemplate} from "../../utils/queries/template-queries";
import {useMarkdownSetting} from "../../utils/queries/markdown-setting-queries";
import {useMarkdownTemplate} from "../../utils/queries/markdown-template-queries";
import TemplatedEditor from "./TemplatedEditor";
import {useMarkdownTemplateSetting} from "../../utils/queries/markdown-template-setting-queries";
const MarkdownEditor = () => {
const { roles } = useContext(AuthContext);
@@ -20,10 +21,11 @@ const MarkdownEditor = () => {
const [pathId, setPathId] = useState(1);
const {data: markdown, isLoading, error} = useMarkdown(id);
const saveMarkdown = useSaveMarkdown();
const {data: setting, isFetching: isSettingFetching} = useMarkdownSetting(markdown?.id);
const {data: template, isFetching: isTemplateFetching} = useMarkdownTemplate(setting?.id);
const {data: setting, isFetching: isSettingFetching} = useMarkdownSetting(markdown?.setting_id);
const {data: templateSetting, isFetching: isTemplateSettingFetching} = useMarkdownTemplateSetting(setting?.template_setting_id);
const {data: template, isFetching: isTemplateFetching} = useMarkdownTemplate(templateSetting?.template_id);
const notReady = isLoading || isTemplateFetching || isSettingFetching;
const notReady = isLoading || isTemplateFetching || isSettingFetching || isTemplateSettingFetching;
useEffect(() => {
if(markdown){
setTitle(markdown.title);
@@ -53,7 +55,7 @@ const MarkdownEditor = () => {
if(notReady)
return <p>Loading...</p>;
console.log(markdown?.id);
if(error)
return <p>{error.message || "Failed to load markdown"}</p>;
@@ -134,4 +136,5 @@ const MarkdownEditor = () => {
);
};
export default MarkdownEditor;
export default MarkdownEditor;

View File

@@ -33,7 +33,8 @@ const Translate = ({variable, value}) => {
const ParseTemplate = ({template, variables}) => {
let res = template.layout;
if(!template || !Array.isArray(template.parameters)) return '';
let res = template.layout ?? '';
for (const parameter of template.parameters) {
res = res.replaceAll(`<${parameter.name}/>`, Translate({
variable: parameter,

View File

@@ -1,5 +1,5 @@
import React, {useState} from "react";
import {useMarkdownTemplate} from "../../utils/queries/template-queries";
import {useMarkdownTemplate} from "../../utils/queries/markdown-template-queries";
const TemplatedEditorComponent = ({ variable, value, namespace, onContentChanged }) => {
if(variable.type.base_type === "string") {
@@ -9,7 +9,7 @@ const TemplatedEditorComponent = ({ variable, value, namespace, onContentChanged
<input
type="text"
className="input"
value={value}
value={value ?? ""}
onChange={(e) => onContentChanged(variable.name, e.target.value)}
/>
<hr/>

View File

@@ -1,6 +1,6 @@
import {useCreateMarkdownSetting, useMarkdownSetting} from "../../utils/queries/setting-queries";
import {useCreateMarkdownSetting, useMarkdownSetting} from "../../utils/queries/markdown-setting-queries";
import {useSaveMarkdown} from "../../utils/queries/markdown-queries";
import {useState} from "react";
import React, {useState} from "react";
import MarkdownTemplateSettingPanel from "../Settings/MarkdownSettings/MarkdownTemplateSettingPanel";
const MarkdownSettingModal = ({isOpen, markdown, onClose}) => {
@@ -40,17 +40,7 @@ const MarkdownSettingModal = ({isOpen, markdown, onClose}) => {
/>
</header>
{
markdownSetting ? (
<section className="modal-card-body">
<button
className="button is-primary"
type="button"
onClick={handleCreateMarkdownSetting}
>
Create Markdown Setting
</button>
</section>
) : (
markdownSetting ? (
<section className="modal-card-body">
<div className="tabs">
<ul>
@@ -61,11 +51,21 @@ const MarkdownSettingModal = ({isOpen, markdown, onClose}) => {
</div>
{activeTab === "template" && (
<MarkdownTemplateSettingPanel
markdown={markdownSetting}
markdownSetting={markdownSetting}
onClose={onClose}
/>
)}
</section>
) : (
<section className="modal-card-body">
<button
className="button is-primary"
type="button"
onClick={handleCreateMarkdownSetting}
>
Create Markdown Setting
</button>
</section>
)
}
</div>
@@ -73,4 +73,4 @@ const MarkdownSettingModal = ({isOpen, markdown, onClose}) => {
);
};
export default MarkdownSettingModal;

View File

@@ -1,5 +1,5 @@
import {useUpdatePath} from "../../utils/queries/path-queries";
import {useCreatePathSetting, usePathSetting} from "../../utils/queries/setting-queries";
import {useCreatePathSetting, usePathSetting} from "../../utils/queries/path-setting-queries";
import WebhookSettingPanel from "../Settings/PathSettings/WebhookSettingPanel";
import React, {useState} from "react";
const PathSettingModal = ({ isOpen, path, onClose }) => {

View File

@@ -68,8 +68,6 @@ const MainNavigation = () => {
const a = document.createElement("a");
const contentDisposition = response.headers.get("Content-Disposition");
let filename = "backup.zip";
console.log(response.headers);
console.log(contentDisposition);
if (contentDisposition) {
const match = contentDisposition.match(/filename="?([^"]+)"?/);
if (match && match[1]) {

View File

@@ -1,8 +1,9 @@
import {Link} from "react-router-dom";
import PermissionGuard from "../PermissionGuard";
import React from "react";
import React, {useState} from "react";
import MarkdownSettingModal from "../Modals/MarkdownSettingModal";
const MarkdownNode = ({markdown, handleMoveMarkdown}) => {
const [isMarkdownSettingModalOpen, setIsMarkdownSettingModalOpen] = useState(false);
return (
<li key={markdown.id}>
<div className="is-clickable field has-addons">
@@ -12,7 +13,21 @@ const MarkdownNode = ({markdown, handleMoveMarkdown}) => {
</Link>
</span>
<PermissionGuard rolesRequired={['admin']}>
<div className="control">
<p className="control">
<button
className="button is-small is-success"
onClick={() => setIsMarkdownSettingModalOpen(true)}
type="button"
>
<span className="icon">
<i className="fas fa-cog"/>
</span>
</button>
</p>
<div
className="control is-flex is-flex-direction-column is-align-items-center"
style={{marginLeft: "0.5rem"}}
>
<button
className="button is-small mb-1 move-forward"
style={{height: "1rem", padding: "0.25rem"}}
@@ -28,6 +43,11 @@ const MarkdownNode = ({markdown, handleMoveMarkdown}) => {
>
</button>
</div>
<MarkdownSettingModal
isOpen={isMarkdownSettingModalOpen}
markdown={markdown}
onClose={() => setIsMarkdownSettingModalOpen(false)}
/>
</PermissionGuard>
</div>

View File

@@ -31,7 +31,6 @@ const PathNode = ({ path, isRoot = false }) => {
};
const handleSave = () => {
console.log(`handleSave ${path.id}`);
updatePath.mutate({id: path.id, data: {name: newName}}, {
onSuccess: () => setIsEditing(false),
onError: err => alert("failed to update this path"),
@@ -135,7 +134,7 @@ const PathNode = ({ path, isRoot = false }) => {
type="button"
>
<span className="icon">
<i className="fas fa-cog"></i>
<i className="fas fa-cog"/>
</span>
</button>
</p>

View File

@@ -1,17 +1,21 @@
import {
useCreateMarkdownTemplateSetting,
useMarkdownTemplate,
useMarkdownTemplates,
useMarkdownTemplateSetting, useUpdateMarkdownTemplateSetting
} from "../../../utils/queries/template-queries";
import {useState} from "react";
import {useUpdateMarkdownSetting} from "../../../utils/queries/setting-queries";
} from "../../../utils/queries/markdown-template-queries";
import {
useCreateMarkdownTemplateSetting,
useMarkdownTemplateSetting,
useUpdateMarkdownTemplateSetting
} from "../../../utils/queries/markdown-template-setting-queries";
import React, {useEffect, useState} from "react";
import {useUpdateMarkdownSetting} from "../../../utils/queries/markdown-setting-queries";
const MarkdownTemplateSettingPanel = ({markdownSetting, onClose}) => {
const {data: setting, isFetching: settingIsFetching } = useMarkdownTemplateSetting(markdownSetting.template_setting_id || 0);
const {data: setting, isFetching: settingIsFetching } = useMarkdownTemplateSetting(markdownSetting?.template_setting_id);
const {data: templates, isFetching: templatesAreFetching}=useMarkdownTemplates();
const {data: template, isFetching: templateIsFetching} = useMarkdownTemplate(setting?.template_id);
const [selectedTemplate, setSelectedTemplate] = useState(template);
const [selectedTemplateId, setSelectedTemplateId] = useState(template?.id ?? undefined);
const [selectedTemplate, setSelectedTemplate] = useState(templates?.find(t => t.id === selectedTemplateId) || undefined);
const createMarkdownTemplateSetting = useCreateMarkdownTemplateSetting();
const updateMarkdownSetting = useUpdateMarkdownSetting();
@@ -33,7 +37,7 @@ const MarkdownTemplateSettingPanel = ({markdownSetting, onClose}) => {
updateMarkdownTemplateSetting.mutate({
id: setting.id,
data: {
template_id: selectedTemplate.id,
template_id: selectedTemplateId,
}
}, {
onSuccess: () => alert("Saved"),
@@ -42,9 +46,17 @@ const MarkdownTemplateSettingPanel = ({markdownSetting, onClose}) => {
onClose();
};
useEffect(() => {
if(template?.id && selectedTemplateId === undefined) {
setSelectedTemplateId(template?.id ?? undefined);
setSelectedTemplate(templates?.find(t => t.id === selectedTemplateId) || undefined);
}
},[template, selectedTemplateId]);
if (settingIsFetching || templatesAreFetching || templatesAreFetching || templateIsFetching) {
return (<p>Loading...</p>);
}
console.log("template", template);
console.log("selectedTemplateId", selectedTemplateId);
return setting ? (
<div className="box" style={{marginTop: "1rem"}}>
<h4 className="title is-5">Template Setting</h4>
@@ -52,12 +64,14 @@ const MarkdownTemplateSettingPanel = ({markdownSetting, onClose}) => {
<label className="label">Use Template</label>
<div className="select is-fullwidth">
<select
value={selectedTemplate.title}
onChange={(e) => setSelectedTemplate(e.target.value)}
value={selectedTemplateId}
onChange={(e) => {
setSelectedTemplateId(e.target.value);
}}
>
<option value="">(default)</option>
{templates.map((_template, index) => (
<option key={index} value={_template}>{_template.title}</option>
<option key={index} value={_template.id}>{_template.title}</option>
))}
</select>
@@ -77,7 +91,7 @@ const MarkdownTemplateSettingPanel = ({markdownSetting, onClose}) => {
type="button"
onClick={handleCreateTemplateSetting}
>
Create Template Setting
Create Template Setting
</button>
);
};

View File

@@ -11,7 +11,7 @@ import {
useUpdateWebhook,
useDeleteWebhook,
} from "../../../utils/queries/webhook-queries";
import {useUpdatePathSetting} from "../../../utils/queries/setting-queries";
import {useUpdatePathSetting} from "../../../utils/queries/path-setting-queries";
const WebhookSettingPanel = ({pathSetting, onClose}) => {

View File

@@ -61,7 +61,7 @@ export const useSaveMarkdown = () => {
const url = id
? `${config.BACKEND_HOST}/api/markdown/${id}`
: `${config.BACKEND_HOST}/api/markdown/`;
const method = id ? "PUT" : "POST";
const method = id ? "PATCH" : "POST";
return fetch_(url, {
method,
body: JSON.stringify(data),
@@ -70,6 +70,7 @@ export const useSaveMarkdown = () => {
onSuccess: (res) => {
queryClient.invalidateQueries(["markdownsByPath", res.path_id]);
queryClient.invalidateQueries(["markdown", res.id]);
queryClient.invalidateQueries("tree");
},
});
};
@@ -87,6 +88,7 @@ export const useMoveMarkdown = () => {
{
onSuccess: () => {
queryClient.invalidateQueries("paths");
queryClient.invalidateQueries("tree");
}
}
);

View File

@@ -0,0 +1,75 @@
import {useConfig} from "../../ConfigProvider";
import {useMutation, useQuery, useQueryClient} from "react-query";
import {fetch_} from "../request-utils";
export const useMarkdownSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"markdown_setting",
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/`),
{
onSuccess: (data) => {
if(data){
for(const setting of data)
queryClient.invalidateQueries(["markdown_setting", setting.id]);
}
}
}
);
};
export const useMarkdownSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["markdown_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${setting_id}`, {}), {
enabled: !!setting_id,
}
);
};
export const useCreateMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/`, {
method: "POST",
body: JSON.stringify(data)
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["markdown_setting", data.id]);
}
}
);
};
export const useUpdateMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${id}`, {
method: "PATCH",
body: JSON.stringify(data)
}),{
onSuccess: (data, variables) => {
queryClient.invalidateQueries(["markdown_setting", variables.id]);
}
});
};
export const useDeleteMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${id}`, {
method: "DELETE",
}),{
onSuccess: (data) => {
queryClient.invalidateQueries(["markdown_setting", data.id]);
}
}
);
};

View File

@@ -24,7 +24,7 @@ export const useMarkdownTemplates = () => {
onSuccess: (data) => {
if(data){
for(const template of data){
queryClient.setQueryData(["markdown_template", template.id], data);
queryClient.setQueryData(["markdown_template", template.id], template);
}
}
}
@@ -99,75 +99,3 @@ export const useSaveMarkdownTemplate = () => {
}
});
}
export const useMarkdownTemplateSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"markdown_template_settings",
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/`), {
onSuccess: (data) => {
if(data){
for(const setting of data){
queryClient.invalidateQueries(["markdown_template_setting", settings.id]);
}
}
}
}
);
};
export const useMarkdownTemplateSetting = (setting_id) => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
["markdown_template_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${settings.id}`), {
enabled: !!setting_id,
}
);
};
export const useCreateMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${id}`, {
method: "POST",
body: JSON.stringify(data),
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["markdown_template_setting", data.id]);
}
});
};
export const useUpdateMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${id}`, {
method: "PUT",
body: JSON.stringify(data),
}),{
onSuccess: (res) => {
queryClient.invalidateQueries(["markdown_template_setting", res.id]);
queryClient.invalidateQueries("markdown_template_settings");
}
}
);
};
export const useDeleteMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${id}`, {
method: "DELETE",
}), {
onSuccess: (res, variables) => {
queryClient.invalidateQueries(["markdown_template_setting", variables.id]);
}
}
);
};

View File

@@ -0,0 +1,74 @@
import {useConfig} from "../../ConfigProvider";
import {useMutation, useQuery, useQueryClient} from "react-query";
import {fetch_} from "../request-utils";
export const useMarkdownTemplateSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"markdown_template_settings",
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/`), {
onSuccess: (data) => {
if(data){
for(const setting of data){
queryClient.invalidateQueries(["markdown_template_setting", settings.id]);
}
}
}
}
);
};
export const useMarkdownTemplateSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["markdown_template_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${setting_id}`), {
enabled: !!setting_id,
}
);
};
export const useCreateMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation((data) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/`, {
method: "POST",
body: JSON.stringify(data),
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["markdown_template_setting", data.id]);
}
});
};
export const useUpdateMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${id}`, {
method: "PATCH",
body: JSON.stringify(data),
}),{
onSuccess: (res) => {
queryClient.invalidateQueries(["markdown_template_setting", res.id]);
queryClient.invalidateQueries("markdown_template_settings");
}
}
);
};
export const useDeleteMarkdownTemplateSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/template/${id}`, {
method: "DELETE",
}), {
onSuccess: (res, variables) => {
queryClient.invalidateQueries(["markdown_template_setting", variables.id]);
}
}
);
};

View File

@@ -0,0 +1,80 @@
import {useConfig} from "../../ConfigProvider";
import {useMutation, useQuery, useQueryClient} from "react-query";
import {fetch_} from "../request-utils";
export const usePathSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"path_settings",
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/`),
{
onSuccess: (data) => {
if(data){
for(const setting of data)
queryClient.setQueryData(["path_setting", setting.id], setting);
}
}
}
);
};
export const usePathSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["path_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/${setting_id}`),
{
enabled: !!setting_id,
}
);
};
export const useCreatePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/path/`, {
method: "POST",
body: JSON.stringify(data)
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["path_setting", data.id]);
queryClient.invalidateQueries("path_settings");
}
}
);
};
export const useUpdatePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/path/${id}`, {
method: "PATCH",
body: JSON.stringify(data)
}), {
onSuccess: (data, variables) => {
queryClient.invalidateQueries(["path_setting", variables.id]);
queryClient.invalidateQueries("path_settings");
}
}
);
};
export const useDeletePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/path/${id}`, {
method: "DELETE",
}),{
onSuccess: (data, variables) => {
queryClient.invalidateQueries(["path_setting", variables.id]);
queryClient.invalidateQueries("path_settings");
}
}
);
};

View File

@@ -1,151 +0,0 @@
import {fetch_} from "../request-utils";
import {useConfig} from "../../ConfigProvider";
import {useMutation, useQuery, useQueryClient} from "react-query";
export const usePathSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"path_settings",
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/`),
{
onSuccess: (data) => {
if(data){
for(const setting of data)
queryClient.setQueryData(["path_setting", setting.id], setting);
}
}
}
);
};
export const usePathSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["path_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/${setting_id}`),
{
enabled: !!setting_id,
}
);
};
export const useCreatePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/path/`, {
method: "POST",
body: JSON.stringify(data)
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["path_setting", data.id]);
queryClient.invalidateQueries("path_setting");
}
}
);
};
export const useUpdatePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/path/${id}`, {
method: "PATCH",
body: JSON.stringify(data)
}), {
onSuccess: (data, variables) => {
queryClient.invalidateQueries(["path_setting", variables.id]);
queryClient.invalidateQueries("path_setting");
}
}
);
};
export const useDeletePathSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/path/${id}`, {
method: "DELETE",
}),{
onSuccess: (data, variables) => {
queryClient.invalidateQueries(["path_setting", variables.id]);
queryClient.invalidateQueries("path_setting");
}
}
);
};
export const useMarkdownSettings = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useQuery(
"markdown_setting",
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/`),
{
onSuccess: (data) => {
if(data){
for(const setting of data)
queryClient.invalidateQueries(["markdown_setting", setting.id]);
}
}
}
);
};
export const useMarkdownSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["markdown_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${setting_id}`, {}), {
enabled: !!setting_id,
}
);
};
export const useCreateMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/`, {
method: "POST",
body: JSON.stringify(data)
}), {
onSuccess: (data) => {
queryClient.invalidateQueries(["path_setting", data.id]);
}
}
);
};
export const useUpdateMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${id}`, {
method: "PATCH",
body: JSON.stringify(data)
}),{
onSuccess: (data) => {
queryClient.invalidateQueries(["path_setting", data.id]);
}
});
};
export const useDeleteMarkdownSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/markdown/${id}`, {
method: "DELETE",
}),{
onSuccess: (data) => {
queryClient.invalidateQueries(["path_setting", data.id]);
}
}
);
};

View File

@@ -77,7 +77,7 @@ export const useWebhookSettings = () => {
const queryClient = useQueryClient();
return useQuery(
"webhook_setting",
() => fetch_(`${config.BACKEND_HOST}/api/setting/webhook/`),
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/webhook/`),
{
onSuccess: (data) => {
if(data){
@@ -94,7 +94,7 @@ export const useWebhookSetting = (setting_id) => {
const config = useConfig();
return useQuery(
["webhook_setting", setting_id],
() => fetch_(`${config.BACKEND_HOST}/api/setting/webhook/${setting_id}`),
() => fetch_(`${config.BACKEND_HOST}/api/setting/path/webhook/${setting_id}`),
{
enabled: !!setting_id,
});
@@ -105,7 +105,7 @@ export const useCreateWebhookSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/webhook/`, {
(data) => fetch_(`${config.BACKEND_HOST}/api/setting/path/webhook/`, {
method: "POST",
body: JSON.stringify(data)
}),{
@@ -121,7 +121,7 @@ export const useUpdateWebhookSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/webhook/${id}`, {
({id, data}) => fetch_(`${config.BACKEND_HOST}/api/setting/path/webhook/${id}`, {
method: "PATCH",
body: JSON.stringify(data)
}),{
@@ -138,7 +138,7 @@ export const useDeleteWebhookSetting = () => {
const config = useConfig();
const queryClient = useQueryClient();
return useMutation(
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/webhook/${id}`, {
(id) => fetch_(`${config.BACKEND_HOST}/api/setting/path/webhook/${id}`, {
method: "DELETE",
}),
{