diff --git a/NodeApp/src/managers/DojoBackendManager.ts b/NodeApp/src/managers/DojoBackendManager.ts index f287fc99760f35acdc7d04c1c132f3f944ea0f87..657df6984600a4ac6412f934c5d3c06e768f45c0 100644 --- a/NodeApp/src/managers/DojoBackendManager.ts +++ b/NodeApp/src/managers/DojoBackendManager.ts @@ -10,6 +10,7 @@ import User from '../sharedByClients/models/User'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; import * as Gitlab from '@gitbeaker/rest'; import DojoBackendHelper from '../sharedByClients/helpers/Dojo/DojoBackendHelper'; +import GitlabPipelineStatus from '../shared/types/Gitlab/GitlabPipelineStatus'; class DojoBackendManager { @@ -20,20 +21,29 @@ class DojoBackendManager { case DojoStatusCode.ASSIGNMENT_EXERCISE_NOT_RELATED: spinner.fail(`The exercise does not belong to the assignment.`); break; + case DojoStatusCode.ASSIGNMENT_PUBLISH_NO_PIPELINE: + spinner.fail(`No pipeline found for this assignment.`); + break; + case DojoStatusCode.ASSIGNMENT_PUBLISH_PIPELINE_FAILED: + spinner.fail(error.response?.data?.message ?? `Last pipeline status is not "${ GitlabPipelineStatus.SUCCESS }".`); + break; case DojoStatusCode.EXERCISE_CORRECTION_ALREADY_EXIST: spinner.fail(`This exercise is already labelled as a correction. If you want to update it, please use the update command.`); break; case DojoStatusCode.EXERCISE_CORRECTION_NOT_EXIST: spinner.fail(`The exercise is not labelled as a correction so it's not possible to update it.`); break; - case DojoStatusCode.ASSIGNMENT_CREATION_GITLAB_ERROR: - spinner.fail(`Assignment creation error: An unknown error occurred while creating the assignment on Gitlab. Please try again later or contact an administrator.`); + case DojoStatusCode.ASSIGNMENT_NAME_CONFLICT: + spinner.fail(`Assignment creation error: The assignment name already exists. Please choose another name.`); + break; + case DojoStatusCode.ASSIGNMENT_CREATION_ERROR: + spinner.fail(`Assignment creation error: An unknown error occurred while creating the assignment (internal error message: ${ error.response?.data?.description ?? 'unknown error' }). Please try again later or contact an administrator.`); break; case DojoStatusCode.MAX_EXERCISE_PER_ASSIGNMENT_REACHED: spinner.fail(`The following users have reached the maximum number of exercise of this assignment : ${ ((error.response.data as DojoBackendResponse<Array<Gitlab.UserSchema>>).data).map(user => user.name).join(', ') }.`); break; - case DojoStatusCode.EXERCISE_CREATION_GITLAB_ERROR: - spinner.fail(`Exercise creation error: An unknown error occurred while creating the exercise on Gitlab. Please try again later or contact an administrator.`); + case DojoStatusCode.EXERCISE_CREATION_ERROR: + spinner.fail(`Exercise creation error: An unknown error occurred while creating the exercise (internal error message: ${ error.response?.data?.description ?? 'unknown error' }). Please try again later or contact an administrator.`); break; case DojoStatusCode.GITLAB_TEMPLATE_NOT_FOUND: spinner.fail(`Template not found or access denied. Please check the template ID or url. Also, please check that the template have public/internal visibility or that your and Dojo account (${ ClientsSharedConfig.gitlab.dojoAccount.username }) have at least reporter role to the template (if private).`); @@ -169,13 +179,7 @@ class DojoBackendManager { return; } catch ( error ) { - if ( verbose ) { - if ( error instanceof AxiosError && error.response ) { - spinner.fail(`Assignment visibility change error: ${ error.response.statusText }`); - } else { - spinner.fail(`Assignment visibility change error: unknown error`); - } - } + this.handleApiError(error, spinner, verbose, `Assignment visibility change error: ${ error }`); throw error; }