drop.chapril.org-firefoxsend/app/main.js

59 lines
1.6 KiB
JavaScript
Raw Normal View History

import 'fast-text-encoding'; // MS Edge support
2017-11-30 22:41:09 +01:00
import 'fluent-intl-polyfill';
import app from './routes';
import locale from '../common/locales';
import fileManager from './fileManager';
import dragManager from './dragManager';
2018-06-06 06:39:26 +02:00
import pasteManager from './pasteManager';
import { canHasSend } from './utils';
import storage from './storage';
import metrics from './metrics';
2017-09-12 02:09:29 +02:00
import experiments from './experiments';
import Raven from 'raven-js';
2018-07-12 22:13:49 +02:00
import './main.css';
if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) {
Raven.config(window.SENTRY_ID, window.RAVEN_CONFIG).install();
}
app.use((state, emitter) => {
state.transfer = null;
state.fileInfo = null;
state.translate = locale.getTranslator();
state.storage = storage;
state.raven = Raven;
2018-01-24 19:23:13 +01:00
window.appState = state;
emitter.on('DOMContentLoaded', async function checkSupport() {
let unsupportedReason = null;
2017-09-13 21:01:55 +02:00
if (
2018-01-24 19:23:13 +01:00
// Firefox < 50
2017-09-13 21:01:55 +02:00
/firefox/i.test(navigator.userAgent) &&
2018-01-24 19:23:13 +01:00
parseInt(navigator.userAgent.match(/firefox\/*([^\n\r]*)\./i)[1], 10) < 50
2017-09-13 21:01:55 +02:00
) {
2018-01-24 19:23:13 +01:00
unsupportedReason = 'outdated';
2017-09-13 21:01:55 +02:00
}
const ok = await canHasSend();
if (!ok) {
2018-01-24 19:23:13 +01:00
unsupportedReason = /firefox/i.test(navigator.userAgent)
? 'outdated'
: 'gcm';
2017-11-06 23:09:15 +01:00
}
2018-01-24 19:23:13 +01:00
if (unsupportedReason) {
setTimeout(() =>
emitter.emit('replaceState', `/unsupported/${unsupportedReason}`)
);
}
});
});
2018-07-07 00:49:50 +02:00
app.use(() => {
navigator.serviceWorker.register('/serviceWorker.js');
});
app.use(metrics);
app.use(fileManager);
app.use(dragManager);
2017-09-12 02:09:29 +02:00
app.use(experiments);
2018-06-06 06:39:26 +02:00
app.use(pasteManager);
app.mount('body');