function buildCommitErrorMessage()

in packages/vscode-extension-web-ide/src/scm/commit/showCommitErrorMessage.ts [43:89]


function buildCommitErrorMessage(error: unknown): [string, vscode.MessageItem] {
  const responseError = parseResponseErrorMessage(error as Error);

  if (typeof responseError === 'string') {
    return [GENERIC_ERROR_MESSAGE, CLOSE_ACTION];
  }

  const { status, body } = responseError;

  if (status === 400 && hasMessage(body)) {
    const message = body.message as string;

    if (DENIED_BY_CUSTOM_HOOKS_ERROR.test(message)) {
      return [CUSTOM_PUSH_RULE_ERROR_MESSAGE, CLOSE_ACTION];
    }

    if (BRANCH_ALREADY_EXISTS_ERROR.test(message)) {
      return [message, SWITCH_BRANCH_ACTION];
    }

    if (FILE_HAS_CHANGED_ERROR.test(message)) {
      return [message, CLOSE_ACTION];
    }

    if (BRANCH_NAME_INVALID.test(message)) {
      return [message, ENTER_BRANCH_NAME_ACTION];
    }

    if (SECRET_DETECTED.test(message)) {
      // log message to the output channel
      log.error(message);
      return [SECRET_DETECTED_GENERIC_MESSAGE, SHOW_LOGS_ACTION];
    }

    return [message, CLOSE_ACTION];
  }

  if (status === 401) {
    return [SESSION_EXPIRED_ERROR_MESSAGE, SIGN_IN_ACTION];
  }

  if (status === 403) {
    return [FORBIDDEN_ERROR_MESSAGE, COMMIT_TO_NEW_BRANCH_ACTION];
  }

  return [GENERIC_ERROR_MESSAGE, CLOSE_ACTION];
}