// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
import { AuthType } from "../../types/auth-type";
import { SendType } from "../../types/send-type";
import { SendResponse } from "../response/send.response";

import { SendFileData } from "./send-file.data";
import { SendTextData } from "./send-text.data";

export class SendData {
  id: string;
  accessId: string;
  type: SendType;
  name: string;
  notes: string;
  file: SendFileData;
  text: SendTextData;
  key: string;
  maxAccessCount?: number;
  accessCount: number;
  revisionDate: string;
  expirationDate: string;
  deletionDate: string;
  password: string;
  emails: string;
  disabled: boolean;
  hideEmail: boolean;
  authType: AuthType;

  constructor(response?: SendResponse) {
    if (response == null) {
      return;
    }

    this.id = response.id;
    this.accessId = response.accessId;
    this.type = response.type;
    this.authType = response.authType;
    this.name = response.name;
    this.notes = response.notes;
    this.key = response.key;
    this.maxAccessCount = response.maxAccessCount;
    this.accessCount = response.accessCount;
    this.revisionDate = response.revisionDate;
    this.expirationDate = response.expirationDate;
    this.deletionDate = response.deletionDate;
    this.password = response.password;
    this.emails = response.emails;
    this.disabled = response.disable;
    this.hideEmail = response.hideEmail;
    this.authType = response.authType;

    switch (this.type) {
      case SendType.Text:
        this.text = new SendTextData(response.text);
        break;
      case SendType.File:
        this.file = new SendFileData(response.file);
        break;
      default:
        break;
    }
  }
}
