/*
 * https://github.com/morethanwords/tweb
 * Copyright (C) 2019-2021 Eduard Kuzmenko
 * https://github.com/morethanwords/tweb/blob/master/LICENSE
 */

import {attachClickEvent} from '../../helpers/dom/clickEvent';
import {SEND_WHEN_ONLINE_TIMESTAMP} from '../../lib/mtproto/constants';
import Button from '../button';
import PopupDatePicker from './datePicker';

const getMinDate = () => {
  const date = new Date();
  // date.setDate(date.getDate() - 1);
  date.setHours(0, 0, 0, 0);
  return date;
};

const getMaxDate = () => {
  const date = new Date();
  date.setFullYear(date.getFullYear() + 1);
  date.setDate(date.getDate() - 1);
  return date;
};

const checkDate = (date: Date) => {
  return date.getTime() > getMaxDate().getTime() ? new Date() : date;
};

export default class PopupSchedule extends PopupDatePicker {
  constructor(initDate: Date, onPick: (timestamp: number) => void, canSendWhenOnline: boolean) {
    super(checkDate(initDate), onPick, {
      noButtons: true,
      noTitle: true,
      closable: true,
      withConfirm: true,
      minDate: getMinDate(),
      maxDate: getMaxDate(),
      withTime: true,
      showOverflowMonths: true,
      confirmShortcutIsSendShortcut: true,
      title: true
    });

    this.element.classList.add('popup-schedule');
    this.header.append(this.controlsDiv);
    this.title.replaceWith(this.monthTitle);
    this.body.append(this.btnConfirm);

    if(canSendWhenOnline) {
      const btnSendWhenOnline = Button('btn-primary btn-secondary btn-primary-transparent primary', {text: 'Schedule.SendWhenOnline'});
      this.body.append(btnSendWhenOnline);

      attachClickEvent(btnSendWhenOnline, () => {
        onPick(SEND_WHEN_ONLINE_TIMESTAMP);
        this.hide();
      });
    }
  }
}
