const FileSender = require('./fileSender');

$(document).ready(function() {
  let copyBtn = $('#copy-btn');
  copyBtn.attr('disabled', false);
  copyBtn.html('Copy');
  $('#page-one').show();
  $('#file-list').hide();
  $('#upload-progress').hide();
  $('#share-link').hide();

  copyBtn.click(() => {
    console.log('copied');
    var aux = document.createElement('input');
    aux.setAttribute('value', $('#link').attr('value'));
    document.body.appendChild(aux);
    aux.select();
    document.execCommand('copy');
    document.body.removeChild(aux);
    copyBtn.attr('disabled', true);
    copyBtn.html('Copied!');
  });
  $('.send-new').click(() => {
    $('#page-one').show();
    $('#file-list').show();
    $('#upload-progress').hide();
    $('#share-link').hide();
    copyBtn.attr('disabled', false);
    copyBtn.html('Copy');
  });

  let onChange = event => {
    const file = event.target.files[0];

    let fileList = $('#uploaded-files');
    let row = document.createElement('tr');
    let name = document.createElement('td');
    let link = document.createElement('td');
    let expiry = document.createElement('td');

    let cellText = document.createTextNode(file.name);

    name.appendChild(cellText);

    let progress = document.createElement('p');

    row.appendChild(name);
    row.appendChild(link);
    row.appendChild(expiry);
    fileList.append(row);

    const fileSender = new FileSender(file);
    fileSender.on('progress', percentComplete => {
      $('#page-one').hide();
      $('#file-list').hide();
      $('#upload-progress').show();
      $('#upload-filename').innerHTML += file.name;
      progress.innerText = `Progress: ${percentComplete}%`;
    });
    fileSender.upload().then(info => {
      const url = `${window.location
        .origin}/download/${info.fileId}/#${info.secretKey}`;
      $('#link').attr('value', url);
      link.innerHTML = url;
      localStorage.setItem(info.fileId, info.deleteToken);
      let del = document.createElement('td');
      let btn = document.createElement('button');
      btn.innerHTML = 'x';
      btn.classList.add('delete-btn');
      btn.addEventListener('click', e => {
        FileSender.delete(
          info.fileId,
          localStorage.getItem(info.fileId)
        ).then(() => {
          e.target.parentNode.parentNode.remove();
          localStorage.removeItem(info.fileId);
        });
      });
      del.appendChild(btn);
      row.appendChild(del);
      $('#upload-progress').hide();
      $('#share-link').show();
    });
  };

  window.onChange = onChange;
});