///
import {
ApiPayload,
CompassSynchronizeLinkAssociationsInput,
ComponentPayload,
GqlError,
MutationError,
SdkError,
SynchronizeLinkAssociations,
} from '@atlassian/forge-graphql-types';
import { CompassRequests } from '../../compass-requests';
import {
mapGqlErrors,
mapMutationErrors,
parsingResponseError,
} from '../../helpers';
declare module '../../compass-requests' {
interface CompassRequests {
/**
* Synchronizes event and metric information for the current set of component links on a Compass site using the provided Forge app.
* **Required Oauth Scopes:** `write:component:compass`, `write:event:compass`, `write:metric:compass`
*/
synchronizeLinkAssociations(
input: CompassSynchronizeLinkAssociationsInput,
): Promise>;
}
}
CompassRequests.prototype.synchronizeLinkAssociations = async function (
this: CompassRequests,
input,
) {
let errors: Array = [];
let gqlErrors: Array;
let mutationErrors: Array;
let data;
try {
const resp = await this.api.requestGraph(
SynchronizeLinkAssociations,
{ input },
'synchronizeLinkAssociations',
);
({ errors: gqlErrors, data } = await resp.json());
errors = mapGqlErrors(gqlErrors);
({
synchronizeLinkAssociations: { errors: mutationErrors },
} = data.compass);
errors = errors.concat(mapMutationErrors(mutationErrors));
} catch (e) {
if (errors.length === 0) {
errors.push(parsingResponseError(e));
}
}
return {
success: errors.length === 0,
errors,
};
};