Refactor the error to AirbrakeApi
Signed-off-by: Karan Shah <karan.shah@simplybusiness.co.uk>
This commit is contained in:
@@ -24,3 +24,9 @@ export const airbrakeApiRef = createApiRef<AirbrakeApi>({
|
||||
export interface AirbrakeApi {
|
||||
fetchGroups(projectId: string): Promise<Groups>;
|
||||
}
|
||||
|
||||
export class NoProjectIdError extends Error {
|
||||
constructor() {
|
||||
super('Project ID is not present');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,15 +15,9 @@
|
||||
*/
|
||||
|
||||
import { Groups } from './airbrakeGroups';
|
||||
import { AirbrakeApi } from './AirbrakeApi';
|
||||
import { AirbrakeApi, NoProjectIdError } from './AirbrakeApi';
|
||||
import { DiscoveryApi } from '@backstage/core-plugin-api';
|
||||
|
||||
export class NoProjectIdError extends Error {
|
||||
constructor() {
|
||||
super('Project ID is not present');
|
||||
}
|
||||
}
|
||||
|
||||
export class ProductionAirbrakeApi implements AirbrakeApi {
|
||||
constructor(private readonly discoveryApi: DiscoveryApi) {}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { Groups } from '../airbrakeGroups';
|
||||
import { AirbrakeApi } from '../AirbrakeApi';
|
||||
import { AirbrakeApi, NoProjectIdError } from '../AirbrakeApi';
|
||||
import mockGroupsData from './airbrakeGroupsApiMock.json';
|
||||
|
||||
export class MockAirbrakeApi implements AirbrakeApi {
|
||||
@@ -25,7 +25,10 @@ export class MockAirbrakeApi implements AirbrakeApi {
|
||||
this.waitTimeInMillis = waitTimeInMillis;
|
||||
}
|
||||
|
||||
fetchGroups(): Promise<Groups> {
|
||||
fetchGroups(projectId: string): Promise<Groups> {
|
||||
if (!projectId) {
|
||||
return Promise.reject(new NoProjectIdError());
|
||||
}
|
||||
return new Promise(resolve => {
|
||||
setTimeout(() => resolve(mockGroupsData), this.waitTimeInMillis);
|
||||
});
|
||||
|
||||
@@ -29,7 +29,7 @@ import { ErrorApi, errorApiRef, useApi } from '@backstage/core-plugin-api';
|
||||
import { airbrakeApiRef } from '../../api';
|
||||
import useAsync from 'react-use/lib/useAsync';
|
||||
import { AIRBRAKE_PROJECT_ID_ANNOTATION, useProjectId } from '../useProjectId';
|
||||
import { NoProjectIdError } from '../../api/ProductionApi';
|
||||
import { NoProjectIdError } from '../../api/AirbrakeApi';
|
||||
|
||||
const useStyles = makeStyles<BackstageTheme>(() => ({
|
||||
multilineText: {
|
||||
|
||||
Reference in New Issue
Block a user