feat: update api service state
This commit is contained in:
@ -3,7 +3,9 @@ import {
|
|||||||
getApiServices,
|
getApiServices,
|
||||||
patchToggleApiService,
|
patchToggleApiService,
|
||||||
postApiService,
|
postApiService,
|
||||||
|
putApiService,
|
||||||
type CreateApiServiceRequest,
|
type CreateApiServiceRequest,
|
||||||
|
type UpdateApiServiceRequest,
|
||||||
} from "@/api/admin/apiServices";
|
} from "@/api/admin/apiServices";
|
||||||
import type { ApiService, ApiServiceCredentials } from "@/types";
|
import type { ApiService, ApiServiceCredentials } from "@/types";
|
||||||
import { create } from "zustand";
|
import { create } from "zustand";
|
||||||
@ -25,6 +27,12 @@ interface IAdminState {
|
|||||||
|
|
||||||
togglingApiService: boolean;
|
togglingApiService: boolean;
|
||||||
toggleApiService: () => Promise<void>;
|
toggleApiService: () => Promise<void>;
|
||||||
|
|
||||||
|
updateApiService: (req: UpdateApiServiceRequest) => Promise<void>;
|
||||||
|
updatingApiService: boolean;
|
||||||
|
updatedApiService: boolean;
|
||||||
|
|
||||||
|
resetUpdatedApiService: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useAdmin = create<IAdminState>((set, get) => ({
|
export const useAdmin = create<IAdminState>((set, get) => ({
|
||||||
@ -39,6 +47,10 @@ export const useAdmin = create<IAdminState>((set, get) => ({
|
|||||||
|
|
||||||
togglingApiService: false,
|
togglingApiService: false,
|
||||||
|
|
||||||
|
updatingApiService: false,
|
||||||
|
updatedApiService: false,
|
||||||
|
resetUpdatedApiService: () => set({ updatedApiService: false }),
|
||||||
|
|
||||||
resetCredentials: () => set({ createdCredentials: null }),
|
resetCredentials: () => set({ createdCredentials: null }),
|
||||||
|
|
||||||
fetchApiServices: async () => {
|
fetchApiServices: async () => {
|
||||||
@ -67,6 +79,23 @@ export const useAdmin = create<IAdminState>((set, get) => ({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
updateApiService: async (req: UpdateApiServiceRequest) => {
|
||||||
|
const viewService = get().viewApiService;
|
||||||
|
if (!viewService) return;
|
||||||
|
|
||||||
|
set({ updatingApiService: true });
|
||||||
|
|
||||||
|
try {
|
||||||
|
await putApiService(viewService.id, req);
|
||||||
|
get().fetchApiService(viewService.id);
|
||||||
|
set({ updatedApiService: true });
|
||||||
|
} catch (err) {
|
||||||
|
console.log("ERR: Failed to toggle service:", err);
|
||||||
|
} finally {
|
||||||
|
set({ updatingApiService: false });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
toggleApiService: async () => {
|
toggleApiService: async () => {
|
||||||
const viewService = get().viewApiService;
|
const viewService = get().viewApiService;
|
||||||
if (!viewService) return;
|
if (!viewService) return;
|
||||||
|
Reference in New Issue
Block a user