import { CompassRequests } from 'src/compass-requests'; import { ComponentSyncEventStatus } from '@atlassian/forge-graphql-types'; import { AggClientError, InvalidConfigFileError, } from './validate-config-file/models/errors'; import { AdditionalLinksValidationError } from './append-links/models/errors'; export default async function reportSyncError( error: Error, componentId: string, externalSourceURL: string, requestApi: CompassRequests, ): Promise { let errorStatus = ComponentSyncEventStatus.ServerError; let lastSyncErrors = [error.message]; if ( error instanceof InvalidConfigFileError || error instanceof AdditionalLinksValidationError || error instanceof AggClientError ) { errorStatus = ComponentSyncEventStatus.UserError; lastSyncErrors = error.errors; } try { await requestApi.updateDataManager({ componentId, externalSourceURL, lastSyncEvent: { status: errorStatus, lastSyncErrors, }, }); } catch (e) { console.error({ message: 'Error reporting sync error to data manager.', error: e, }); } }