fox-send/app/templates/expireInfo/index.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

/* globals DEFAULTS */
2018-07-31 18:09:18 +00:00
const html = require('choo/html');
const raw = require('choo/html/raw');
const selectbox = require('../selectbox');
2018-08-08 18:07:09 +00:00
const timeLimitText = require('../timeLimitText');
2018-09-07 17:53:40 +00:00
const okDialog = require('../okDialog');
2018-07-31 18:09:18 +00:00
2018-08-07 22:40:17 +00:00
module.exports = function(state, emit) {
2018-07-31 18:09:18 +00:00
const el = html`<div> ${raw(
state.translate('frontPageExpireInfo', {
downloadCount: '<select id=dlCount></select>',
2018-08-08 18:07:09 +00:00
timespan: '<select id=timespan></select>'
2018-07-31 18:09:18 +00:00
})
)}
</div>`;
2018-08-07 22:40:17 +00:00
if (el.__encoded) {
// we're rendering on the server
return el;
}
2018-07-31 18:09:18 +00:00
const counts = DEFAULTS.DOWNLOAD_COUNTS.filter(
i => state.capabilities.account || i <= state.user.maxDownloads
);
2018-07-31 18:09:18 +00:00
const dlCountSelect = el.querySelector('#dlCount');
el.replaceChild(
selectbox(
state.downloadCount || 1,
counts,
2018-07-31 18:09:18 +00:00
num => state.translate('downloadCount', { num }),
value => {
2018-08-07 22:40:17 +00:00
const max = state.user.maxDownloads;
if (value > max) {
2018-09-07 17:53:40 +00:00
state.modal = okDialog('todo: this setting requires an account');
2018-08-07 22:40:17 +00:00
value = max;
}
2018-07-31 18:09:18 +00:00
state.downloadCount = value;
2018-08-07 22:40:17 +00:00
emit('render');
2018-07-31 18:09:18 +00:00
}
),
dlCountSelect
);
const expires = DEFAULTS.EXPIRE_TIMES_SECONDS.filter(
i => state.capabilities.account || i <= state.user.maxExpireSeconds
);
2018-07-31 18:09:18 +00:00
const timeSelect = el.querySelector('#timespan');
el.replaceChild(
2018-08-08 18:07:09 +00:00
selectbox(
state.timeLimit || 86400,
expires,
2018-08-08 18:07:09 +00:00
num => timeLimitText(state.translate, num),
value => {
2018-08-07 22:40:17 +00:00
const max = state.user.maxExpireSeconds;
if (value > max) {
2018-09-07 17:53:40 +00:00
state.modal = okDialog('todo: this setting requires an account');
2018-08-07 22:40:17 +00:00
value = max;
}
2018-08-08 18:07:09 +00:00
state.timeLimit = value;
2018-08-07 22:40:17 +00:00
emit('render');
2018-08-08 18:07:09 +00:00
}
),
2018-07-31 18:09:18 +00:00
timeSelect
);
return el;
};