Use queryFn instead of query to be able to catch errors in onCall req… (#60685)

Use queryFn instead of query to be able to catch errors in onCall request
This commit is contained in:
Sonia Aguilar 2022-12-22 14:30:27 +01:00 committed by GitHub
parent 9ce1cd9ddf
commit 22ad487c4b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,3 +1,7 @@
import { lastValueFrom } from 'rxjs';
import { getBackendSrv } from '@grafana/runtime';
import { alertingApi } from './alertingApi';
export interface OnCallIntegration {
integration_url: string;
@ -8,13 +12,26 @@ export type OnCallIntegrationsUrls = string[];
export const onCallApi = alertingApi.injectEndpoints({
endpoints: (build) => ({
getOnCallIntegrations: build.query<OnCallIntegrationsUrls, void>({
query: () => ({
headers: {},
url: '/api/plugin-proxy/grafana-oncall-app/api/internal/v1/alert_receive_channels/',
}),
queryFn: async () => {
const integrations = await fetchOnCallIntegrations();
return { data: integrations };
},
providesTags: ['AlertmanagerChoice'],
transformResponse: (response: OnCallIntegrationsResponse) => response.map((result) => result.integration_url),
}),
}),
});
export async function fetchOnCallIntegrations(): Promise<OnCallIntegrationsUrls> {
try {
const response = await lastValueFrom(
getBackendSrv().fetch<OnCallIntegrationsResponse>({
url: '/api/plugin-proxy/grafana-oncall-app/api/internal/v1/alert_receive_channels/',
showErrorAlert: false,
showSuccessAlert: false,
})
);
return response.data.map((result) => result.integration_url);
} catch (error) {
return [];
}
}
export const { useGetOnCallIntegrationsQuery } = onCallApi;