async function performConversion()

in frontend/app/PremiereVersionChange/VersionChangeService.ts [87:120]


async function performConversion(
  fileId: number,
  requiredVersion: string
): Promise<FileEntry> {
  try {
    const response = await axios.post(
      `/api/file/${fileId}/changePremiereVersion?requiredDisplayVersion=${encodeURIComponent(
        requiredVersion
      )}`,
      null,
      { validateStatus: (status) => status === 200 || status === 400 }
    );
    switch (response.status) {
      case 200: //conversion was done ok
        const data = response.data as ConversionResponse;
        return data.entry;
      case 400: //there was a problem with the input
        const problem = response.data as GenericErrorResponse;
        return Promise.reject(
          problem.detail ?? "Server returned an unknown error"
        );
      default:
        //the construct of the axios call above should guarantee that only 200 or 400 responses come through here
        return Promise.reject(
          `Internal error, unexpected return code ${response.status} should not happen`
        );
    }
  } catch (err) {
    console.error("Could not request conversion: ", err);
    return Promise.reject(
      "Unable to request conversion, please see the javascript console log for details."
    );
  }
}