70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
const html = require('choo/html');
|
|
const assets = require('../../common/assets');
|
|
const notFound = require('./notFound');
|
|
const { bytes } = require('../utils');
|
|
|
|
function getFileFromDOM() {
|
|
const el = document.getElementById('dl-file');
|
|
if (!el) {
|
|
return null;
|
|
}
|
|
const data = el.dataset;
|
|
return {
|
|
name: data.name,
|
|
size: parseInt(data.size, 10),
|
|
ttl: parseInt(data.ttl, 10)
|
|
};
|
|
}
|
|
|
|
module.exports = function(state, emit) {
|
|
state.fileInfo = state.fileInfo || getFileFromDOM();
|
|
if (!state.fileInfo) {
|
|
return notFound(state, emit);
|
|
}
|
|
state.fileInfo.id = state.params.id;
|
|
state.fileInfo.key = state.params.key;
|
|
const fileInfo = state.fileInfo;
|
|
const size = bytes(fileInfo.size);
|
|
const div = html`
|
|
<div id="page-one">
|
|
<div id="download">
|
|
<div id="download-page-one">
|
|
<div class="title">
|
|
<span id="dl-file"
|
|
data-name="${fileInfo.name}"
|
|
data-size="${fileInfo.size}"
|
|
data-ttl="${fileInfo.ttl}">${state.translate('downloadFileName', {
|
|
filename: fileInfo.name
|
|
})}</span>
|
|
<span id="dl-filesize">${' ' +
|
|
state.translate('downloadFileSize', { size })}</span>
|
|
</div>
|
|
<div class="description">${state.translate('downloadMessage')}</div>
|
|
<img
|
|
src="${assets.get('illustration_download.svg')}"
|
|
id="download-img"
|
|
alt="${state.translate('downloadAltText')}"/>
|
|
<div>
|
|
<button
|
|
id="download-btn"
|
|
class="btn"
|
|
title="${state.translate('downloadButtonLabel')}"
|
|
onclick=${download}>${state.translate(
|
|
'downloadButtonLabel'
|
|
)}</button>
|
|
</div>
|
|
</div>
|
|
<a class="send-new" href="/">${state.translate('sendYourFilesLink')}</a>
|
|
</div>
|
|
</div>
|
|
`;
|
|
function download(event) {
|
|
event.preventDefault();
|
|
emit('download', fileInfo);
|
|
}
|
|
|
|
if (state.layout) {
|
|
return state.layout(state, div);
|
|
}
|
|
return div;
|
|
};
|