From 6cd9da69ab2f33dcc13193c833f47c1597ce95dc Mon Sep 17 00:00:00 2001 From: LandaMm Date: Tue, 3 Jun 2025 12:58:40 +0200 Subject: [PATCH] feat: update api service state --- web/src/store/admin.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/web/src/store/admin.ts b/web/src/store/admin.ts index b6accfd..690d601 100644 --- a/web/src/store/admin.ts +++ b/web/src/store/admin.ts @@ -3,7 +3,9 @@ import { getApiServices, patchToggleApiService, postApiService, + putApiService, type CreateApiServiceRequest, + type UpdateApiServiceRequest, } from "@/api/admin/apiServices"; import type { ApiService, ApiServiceCredentials } from "@/types"; import { create } from "zustand"; @@ -25,6 +27,12 @@ interface IAdminState { togglingApiService: boolean; toggleApiService: () => Promise; + + updateApiService: (req: UpdateApiServiceRequest) => Promise; + updatingApiService: boolean; + updatedApiService: boolean; + + resetUpdatedApiService: () => void; } export const useAdmin = create((set, get) => ({ @@ -39,6 +47,10 @@ export const useAdmin = create((set, get) => ({ togglingApiService: false, + updatingApiService: false, + updatedApiService: false, + resetUpdatedApiService: () => set({ updatedApiService: false }), + resetCredentials: () => set({ createdCredentials: null }), fetchApiServices: async () => { @@ -67,6 +79,23 @@ export const useAdmin = create((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 () => { const viewService = get().viewApiService; if (!viewService) return;