ws-nextjs-app/pages/[service]/send/[id]/UGCSendError.ts

Summary

Maintainability
A
0 mins
Test Coverage
import UGCErrorPayload from './UGCErrorPayload';

export default class UGCSendError extends Error {
  readonly UNRECOVERABLE_UGC_SEND_ERROR_CODES = [
    'ERR_CAMPAIGN_CLOSED',
    'ERR_CAMPAIGN_NOT_FOUND',
    'ERR_MAXIMUM_SUBMISSIONS_REACHED',
    'ERR_PROFILES_NOT_SUPPORTED',
  ];

  req: XMLHttpRequest;

  code: string;

  status: number;

  isRecoverable: boolean;

  constructor(req: XMLHttpRequest) {
    const { code, message, status } = UGCErrorPayload.parseErrorPayload(req);

    super(message);
    this.req = req;
    this.code = code;
    this.name = 'UGSSendError';
    this.status = status;
    this.isRecoverable = !this.#isUnrecoverableSubmissionError();
  }

  #isUnrecoverableSubmissionError() {
    return this.UNRECOVERABLE_UGC_SEND_ERROR_CODES.includes(this.code);
  }
}