diff --git a/web/src/api/admin/apiServices.ts b/web/src/api/admin/apiServices.ts index 7e998f8..8db2d2f 100644 --- a/web/src/api/admin/apiServices.ts +++ b/web/src/api/admin/apiServices.ts @@ -44,3 +44,14 @@ export const postApiService = async ( return response.data; }; + +export const getApiService = async (id: string): Promise => { + const response = await axios.get( + `/api/v1/admin/api-services/${id}`, + ); + + if (response.status !== 200 && response.status !== 201) + throw await handleApiError(response); + + return response.data; +}; diff --git a/web/src/store/admin.ts b/web/src/store/admin.ts index 9eea1ce..4af888a 100644 --- a/web/src/store/admin.ts +++ b/web/src/store/admin.ts @@ -1,4 +1,5 @@ import { + getApiService, getApiServices, postApiService, type CreateApiServiceRequest, @@ -13,7 +14,11 @@ interface IAdminState { createdCredentials: ApiServiceCredentials | null; creatingApiService: boolean; + viewApiService: ApiService | null; + fetchingApiService: boolean; + fetchApiServices: () => Promise; + fetchApiService: (id: string) => Promise; createApiService: (req: CreateApiServiceRequest) => Promise; resetCredentials: () => void; } @@ -25,6 +30,9 @@ export const useAdmin = create((set) => ({ createdCredentials: null, creatingApiService: false, + viewApiService: null, + fetchingApiService: false, + resetCredentials: () => set({ createdCredentials: null }), fetchApiServices: async () => { @@ -40,6 +48,19 @@ export const useAdmin = create((set) => ({ } }, + fetchApiService: async (id: string) => { + set({ fetchingApiService: true }); + + try { + const response = await getApiService(id); + set({ viewApiService: response }); + } catch (err) { + console.log("ERR: Failed to fetch services:", err); + } finally { + set({ fetchingApiService: false }); + } + }, + createApiService: async (req: CreateApiServiceRequest) => { set({ creatingApiService: true });