grafana/public/app/features/admin/AdminFeatureTogglesAPI.ts
Ibrahim 0d48ac2419
Feat: Feature toggle admin page frontend interface (#72164)
* feature toggles admin page proto

* feature toggle admin page proto

* keep phase 1 code only

* latest update with api

* fix

* fix

* add correct premissions in admin.go

* move behind toggle

* Use InteractiveTable

* guard behind feature toggle

* use RTK

* route in api.go

* fixes
2023-08-03 14:17:00 -04:00

35 lines
916 B
TypeScript

import { createApi, BaseQueryFn } from '@reduxjs/toolkit/query/react';
import { lastValueFrom } from 'rxjs';
import { getBackendSrv } from '@grafana/runtime';
const backendSrvBaseQuery =
({ baseUrl }: { baseUrl: string }): BaseQueryFn<{ url: string }> =>
async ({ url }) => {
try {
const { data } = await lastValueFrom(getBackendSrv().fetch({ url: baseUrl + url }));
return { data };
} catch (error) {
return { error };
}
};
export const togglesApi = createApi({
reducerPath: 'togglesApi',
baseQuery: backendSrvBaseQuery({ baseUrl: '/api' }),
endpoints: (builder) => ({
getFeatureToggles: builder.query<FeatureToggle[], void>({
query: () => ({ url: '/featuremgmt' }),
}),
}),
});
type FeatureToggle = {
name: string;
enabled: boolean;
description: string;
};
export const { useGetFeatureTogglesQuery } = togglesApi;
export type { FeatureToggle };