feat(web): introduce templates

This commit is contained in:
Ali BARIN
2025-02-26 10:40:47 +00:00
parent 69e91fea18
commit 839fda8880
33 changed files with 904 additions and 86 deletions

View File

@@ -0,0 +1,15 @@
import { useMutation } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminCreateTemplate() {
const mutation = useMutation({
mutationFn: async ({ flowId, name }) => {
const { data } = await api.post(`/v1/admin/templates`, { flowId, name });
return data;
},
});
return mutation;
}

View File

@@ -0,0 +1,23 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminDeleteTemplate(templateId) {
const queryClient = useQueryClient();
const mutation = useMutation({
mutationFn: async () => {
const { data } = await api.delete(`/v1/admin/templates/${templateId}`);
return data;
},
onSuccess: async () => {
await queryClient.invalidateQueries({
queryKey: ['admin', 'templates'],
});
},
});
return mutation;
}

View File

@@ -0,0 +1,17 @@
import { useQuery } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminTemplate(templateId) {
const query = useQuery({
queryKey: ['admin', 'templates', templateId],
queryFn: async ({ signal }) => {
const { data } = await api.get(`/v1/admin/templates/${templateId}`, {
signal,
});
return data;
},
});
return query;
}

View File

@@ -0,0 +1,17 @@
import { useQuery } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminTemplates() {
const query = useQuery({
queryKey: ['admin', 'templates'],
queryFn: async ({ signal }) => {
const { data } = await api.get('/v1/admin/templates', {
signal,
});
return data;
},
});
return query;
}

View File

@@ -1,21 +1,21 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminUpdateConfig(appKey) {
export default function useAdminUpdateConfig() {
const queryClient = useQueryClient();
const query = useMutation({
const mutation = useMutation({
mutationFn: async (payload) => {
const { data } = await api.patch('/v1/admin/config', payload);
return data;
},
onSuccess: () => {
queryClient.invalidateQueries({
onSuccess: async () => {
await queryClient.invalidateQueries({
queryKey: ['automatisch', 'config'],
});
},
});
return query;
return mutation;
}

View File

@@ -0,0 +1,17 @@
import { useMutation } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useAdminUpdateTemplate(templateId) {
const mutation = useMutation({
mutationFn: async ({ name }) => {
const { data } = await api.patch(`/v1/admin/templates/${templateId}`, {
name,
});
return data;
},
});
return mutation;
}

View File

@@ -5,19 +5,21 @@ import api from 'helpers/api';
export default function useCreateFlow() {
const queryClient = useQueryClient();
const query = useMutation({
mutationFn: async () => {
const { data } = await api.post('/v1/flows');
const mutation = useMutation({
mutationFn: async ({ templateId }) => {
const { data } = await api.post('/v1/flows', null, {
params: { templateId },
});
return data;
},
onSuccess: () => {
queryClient.invalidateQueries({
onSuccess: async () => {
await queryClient.invalidateQueries({
queryKey: ['flows'],
});
},
});
return query;
return mutation;
}

View File

@@ -0,0 +1,8 @@
import userAbility from 'helpers/userAbility';
import useCurrentUser from 'hooks/useCurrentUser';
export default function useIsCurrentUserAdmin() {
const { data: currentUser } = useCurrentUser();
return currentUser?.data.role.isAdmin === true;
}

View File

@@ -0,0 +1,17 @@
import { useQuery } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useTemplates() {
const query = useQuery({
queryKey: ['templates'],
queryFn: async ({ signal }) => {
const { data } = await api.get('/v1/templates', {
signal,
});
return data;
},
});
return query;
}