2018-08-08 00:40:17 +02:00
|
|
|
const html = require('choo/html');
|
|
|
|
const raw = require('choo/html/raw');
|
2018-11-20 21:07:47 +01:00
|
|
|
const config = require('./config');
|
2019-02-26 19:39:50 +01:00
|
|
|
const clientConstants = require('./clientConstants');
|
2018-11-20 21:07:47 +01:00
|
|
|
|
|
|
|
let sentry = '';
|
|
|
|
if (config.sentry_id) {
|
|
|
|
//eslint-disable-next-line node/no-missing-require
|
2018-11-21 23:40:38 +01:00
|
|
|
const version = require('../dist/version.json');
|
2018-11-20 21:07:47 +01:00
|
|
|
sentry = `
|
2019-08-09 20:06:21 +02:00
|
|
|
var SENTRY_CONFIG = {
|
|
|
|
dsn: '${config.sentry_id}',
|
2018-11-20 21:07:47 +01:00
|
|
|
release: '${version.version}',
|
2019-08-09 20:06:21 +02:00
|
|
|
beforeSend: function (data) {
|
2018-11-20 21:07:47 +01:00
|
|
|
var hash = window.location.hash;
|
|
|
|
if (hash) {
|
|
|
|
return JSON.parse(JSON.stringify(data).replace(new RegExp(hash.slice(1), 'g'), ''));
|
|
|
|
}
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
}
|
|
|
|
|
2018-08-08 00:40:17 +02:00
|
|
|
module.exports = function(state) {
|
2018-11-20 21:07:47 +01:00
|
|
|
const authConfig = state.authConfig
|
|
|
|
? `var AUTH_CONFIG = ${JSON.stringify(state.authConfig)};`
|
|
|
|
: '';
|
|
|
|
|
|
|
|
/* eslint-disable no-useless-escape */
|
|
|
|
const jsconfig = `
|
|
|
|
var isIE = /trident\\\/7\.|msie/i.test(navigator.userAgent);
|
|
|
|
var isUnsupportedPage = /\\\/unsupported/.test(location.pathname);
|
|
|
|
if (isIE && !isUnsupportedPage) {
|
2018-12-18 21:27:43 +01:00
|
|
|
window.location.assign('/unsupported/ie');
|
2018-11-20 21:07:47 +01:00
|
|
|
}
|
2018-12-18 21:27:43 +01:00
|
|
|
if (
|
|
|
|
// Firefox < 50
|
|
|
|
/firefox/i.test(navigator.userAgent) &&
|
|
|
|
parseInt(navigator.userAgent.match(/firefox\\/*([^\\n\\r]*)\./i)[1], 10) < 50
|
|
|
|
) {
|
|
|
|
window.location.assign('/unsupported/outdated');
|
|
|
|
}
|
|
|
|
|
2019-02-26 19:39:50 +01:00
|
|
|
var LIMITS = ${JSON.stringify(clientConstants.LIMITS)};
|
|
|
|
var DEFAULTS = ${JSON.stringify(clientConstants.DEFAULTS)};
|
2019-04-26 22:30:33 +02:00
|
|
|
var PREFS = ${JSON.stringify(state.prefs)};
|
|
|
|
var downloadMetadata = ${
|
2018-11-20 21:07:47 +01:00
|
|
|
state.downloadMetadata ? raw(JSON.stringify(state.downloadMetadata)) : '{}'
|
|
|
|
};
|
|
|
|
${authConfig};
|
|
|
|
${sentry}
|
|
|
|
`;
|
2018-08-08 00:40:17 +02:00
|
|
|
return state.cspNonce
|
|
|
|
? html`
|
2018-11-16 21:39:36 +01:00
|
|
|
<script nonce="${state.cspNonce}">
|
2018-11-20 21:07:47 +01:00
|
|
|
${raw(jsconfig)};
|
2018-11-16 21:39:36 +01:00
|
|
|
</script>
|
|
|
|
`
|
2018-08-08 00:40:17 +02:00
|
|
|
: '';
|
|
|
|
};
|