/* global EXPIRE_SECONDS */ const html = require('choo/html'); const assets = require('../../common/assets'); const notFound = require('./notFound'); const uploadPassword = require('./uploadPassword'); const selectbox = require('./selectbox'); const { allowedCopy, delay, fadeOut } = require('../utils'); function passwordComplete(state, password) { const el = html([ `
${state.translate('passwordResult', { password: '
'
    })}
` ]); const displayPassword = []; for (let i = 0; i < password.length; i++) { displayPassword[i] = '●'; } const passwordOriginal = document.createElement('div'); passwordOriginal.className = 'passwordOriginal'; passwordOriginal.innerText = password; const passwordStar = document.createElement('div'); passwordStar.className = 'passwordStar'; passwordStar.innerText = displayPassword .toString() .split(',') .join(''); el.lastElementChild.appendChild(passwordOriginal); el.lastElementChild.appendChild(passwordStar); return el; } function expireInfo(file, translate, emit) { const hours = Math.floor(EXPIRE_SECONDS / 60 / 60); const el = html([ `
${translate('expireInfo', { downloadCount: '', timespan: translate('timespanHours', { num: hours }) })}
` ]); const select = el.querySelector('select'); const options = [1, 2, 3, 4, 5, 20]; const t = num => translate('downloadCount', { num }); const changed = value => emit('changeLimit', { file, value }); select.parentNode.replaceChild( selectbox(file.dlimit || 1, options, t, changed), select ); return el; } module.exports = function(state, emit) { const file = state.storage.getFileById(state.params.id); if (!file) { return notFound(state, emit); } file.password = file.password || ''; const passwordSection = file.password ? passwordComplete(state, file.password) : uploadPassword(state, emit); const div = html` `; function showPopup() { const popupText = document.querySelector('.popuptext'); popupText.classList.add('show'); popupText.focus(); } function cancel(e) { e.stopPropagation(); const popupText = document.querySelector('.popuptext'); popupText.classList.remove('show'); } async function sendNew(e) { e.preventDefault(); await fadeOut('share-link'); emit('pushState', '/'); } async function copyLink() { if (allowedCopy()) { emit('copy', { url: file.url, location: 'success-screen' }); const input = document.getElementById('link'); input.disabled = true; const copyBtn = document.getElementById('copy-btn'); copyBtn.disabled = true; copyBtn.classList.add('success'); copyBtn.replaceChild( html``, copyBtn.firstChild ); await delay(2000); input.disabled = false; if (!copyBtn.parentNode.classList.contains('wait-password')) { copyBtn.disabled = false; } copyBtn.classList.remove('success'); copyBtn.textContent = state.translate('copyUrlFormButton'); } } async function deleteFile() { emit('delete', { file, location: 'success-screen' }); await fadeOut('share-link'); emit('pushState', '/'); } return div; };