drop.chapril.org-firefoxsend/app/routes/index.js

78 lines
2.4 KiB
JavaScript
Raw Normal View History

const choo = require('choo');
const html = require('choo/html');
const nanotiming = require('nanotiming');
const download = require('./download');
const footer = require('../templates/footer');
const fxPromo = require('../templates/fxPromo');
2018-07-31 20:09:18 +02:00
const signupPromo = require('../templates/signupPromo');
2018-06-19 21:58:42 +02:00
const activeBackground = require('../templates/activeBackground');
2018-07-31 20:09:18 +02:00
const fileList = require('../templates/fileList');
const profile = require('../templates/userAccount');
nanotiming.disabled = true;
const app = choo();
2018-01-24 19:23:13 +01:00
function banner(state, emit) {
if (state.promo && !state.route.startsWith('/unsupported/')) {
return fxPromo(state, emit);
}
}
function body(template) {
return function(state, emit) {
2018-06-21 20:28:31 +02:00
const b = html`<body class="background ${activeBackground(state)}">
2018-01-24 19:23:13 +01:00
${banner(state, emit)}
2018-02-20 08:10:03 +01:00
<main class="main">
<noscript>
2018-02-20 08:10:03 +01:00
<div class="noscript">
<h2>${state.translate('javascriptRequired')}</h2>
<p>
<a class="link" href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-does-firefox-send-require-javascript">
${state.translate('whyJavascript')}
</a>
</p>
<p>${state.translate('enableJavascript')}</p>
</div>
</noscript>
2018-08-09 02:24:58 +02:00
${signupPromo(state)}
2018-06-21 00:23:15 +02:00
<div class="stripedBox">
<div class="mainContent">
2018-07-31 20:09:18 +02:00
2018-08-08 00:40:17 +02:00
${profile(state, emit)}
2018-07-31 20:09:18 +02:00
2018-06-21 00:23:15 +02:00
${template(state, emit)}
</div>
</div>
2018-07-31 20:09:18 +02:00
2018-06-21 00:23:15 +02:00
<div class="spacer"></div>
2018-07-31 20:09:18 +02:00
<div class="uploads">
${fileList(state)}
</div>
2018-02-20 08:10:03 +01:00
</main>
${footer(state)}
</body>`;
if (state.layout) {
2018-01-24 19:23:13 +01:00
// server side only
return state.layout(state, b);
}
return b;
};
}
2018-08-03 21:24:41 +02:00
app.route('/', body(require('../pages/welcome')));
2018-01-30 21:15:09 +01:00
app.route('/share/:id', body(require('../pages/share')));
app.route('/download/:id', body(download));
app.route('/download/:id/:key', body(download));
2018-01-30 21:15:09 +01:00
app.route('/unsupported/:reason', body(require('../pages/unsupported')));
app.route('/legal', body(require('../pages/legal')));
app.route('/error', body(require('../pages/error')));
app.route('/blank', body(require('../pages/blank')));
2018-07-31 20:09:18 +02:00
app.route('/signin', body(require('../pages/signin')));
2018-08-08 00:40:17 +02:00
app.route('/api/fxa/oauth', function(state, emit) {
emit('replaceState', '/');
setTimeout(() => emit('render'));
});
app.route('*', body(require('../pages/notFound')));
module.exports = app;