mirror of
https://github.com/mastodon/mastodon.git
synced 2024-08-20 21:08:15 -07:00
b11ac88692
app/javascript/mastodon/main.js delayed the execution of modules, but other entry points didn't. That leads to failure in executing modules, which requires those polyfills. Strictly enforce the rule to require any modules after loading polyfill in entry points.
35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
import * as OfflinePluginRuntime from 'offline-plugin/runtime';
|
|
import * as WebPushSubscription from './web_push_subscription';
|
|
import Mastodon from 'mastodon/containers/mastodon';
|
|
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
import ready from './ready';
|
|
|
|
const perf = require('./performance');
|
|
|
|
function main() {
|
|
perf.start('main()');
|
|
|
|
if (window.history && history.replaceState) {
|
|
const { pathname, search, hash } = window.location;
|
|
const path = pathname + search + hash;
|
|
if (!(/^\/web[$/]/).test(path)) {
|
|
history.replaceState(null, document.title, `/web${path}`);
|
|
}
|
|
}
|
|
|
|
ready(() => {
|
|
const mountNode = document.getElementById('mastodon');
|
|
const props = JSON.parse(mountNode.getAttribute('data-props'));
|
|
|
|
ReactDOM.render(<Mastodon {...props} />, mountNode);
|
|
if (process.env.NODE_ENV === 'production') {
|
|
// avoid offline in dev mode because it's harder to debug
|
|
OfflinePluginRuntime.install();
|
|
WebPushSubscription.register();
|
|
}
|
|
perf.stop('main()');
|
|
});
|
|
}
|
|
|
|
export default main;
|