| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { useMutation, useQueryClient } from '@tanstack/react-query';
- import { HttpUtil } from '@/utils';
- import { keys } from '@/api/queryKeys';
- import type { BulkAddHostValues } from '@/schemas/api/host';
- const JSON_HEADERS = { headers: { 'Content-Type': 'application/json' } };
- export function useHostMutations() {
- const queryClient = useQueryClient();
- const invalidate = () => queryClient.invalidateQueries({ queryKey: keys.hosts.root() });
- const bulkCreateMut = useMutation({
- mutationFn: (payload: BulkAddHostValues) =>
- HttpUtil.post('/panel/api/hosts/bulk/add', payload, JSON_HEADERS),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const updateMut = useMutation({
- mutationFn: ({ groupId, payload }: { groupId: string; payload: BulkAddHostValues }) =>
- HttpUtil.post(`/panel/api/hosts/update/${groupId}`, payload, JSON_HEADERS),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const removeMut = useMutation({
- mutationFn: (groupId: string) => HttpUtil.post(`/panel/api/hosts/del/${groupId}`),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const setEnableMut = useMutation({
- mutationFn: ({ groupId, enable }: { groupId: string; enable: boolean }) =>
- HttpUtil.post(`/panel/api/hosts/setEnable/${groupId}`, { enable }),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const reorderMut = useMutation({
- mutationFn: (groupIds: string[]) =>
- HttpUtil.post('/panel/api/hosts/reorder', { ids: groupIds }, JSON_HEADERS),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const bulkEnableMut = useMutation({
- mutationFn: ({ groupIds, enable }: { groupIds: string[]; enable: boolean }) =>
- HttpUtil.post('/panel/api/hosts/bulk/setEnable', { ids: groupIds, enable }, JSON_HEADERS),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- const bulkDelMut = useMutation({
- mutationFn: (groupIds: string[]) =>
- HttpUtil.post('/panel/api/hosts/bulk/del', { ids: groupIds }, JSON_HEADERS),
- onSuccess: (msg) => {
- if (msg?.success) invalidate();
- },
- });
- return {
- bulkCreate: (payload: BulkAddHostValues) => bulkCreateMut.mutateAsync(payload),
- update: (groupId: string, payload: BulkAddHostValues) =>
- updateMut.mutateAsync({ groupId, payload }),
- remove: (groupId: string) => removeMut.mutateAsync(groupId),
- setEnable: (groupId: string, enable: boolean) => setEnableMut.mutateAsync({ groupId, enable }),
- reorder: (groupIds: string[]) => reorderMut.mutateAsync(groupIds),
- bulkSetEnable: (groupIds: string[], enable: boolean) =>
- bulkEnableMut.mutateAsync({ groupIds, enable }),
- bulkDel: (groupIds: string[]) => bulkDelMut.mutateAsync(groupIds),
- };
- }
|