bigbuffet-rw/app/soapbox/main.tsx

65 lines
1.8 KiB
TypeScript
Raw Normal View History

2020-03-27 13:59:38 -07:00
'use strict';
import './precheck';
2022-04-05 12:43:29 -07:00
import * as OfflinePluginRuntime from '@lcdp/offline-plugin/runtime';
2020-03-27 13:59:38 -07:00
import React from 'react';
import ReactDOM from 'react-dom';
2022-06-23 15:53:04 -07:00
import { defineMessages } from 'react-intl';
import snackbar from 'soapbox/actions/snackbar';
import { setSwUpdating } from 'soapbox/actions/sw';
2022-11-15 12:48:54 -08:00
import * as BuildConfig from 'soapbox/build-config';
import { store } from 'soapbox/store';
import { printConsoleWarning } from 'soapbox/utils/console';
2022-01-10 14:01:24 -08:00
import { default as Soapbox } from './containers/soapbox';
2021-09-08 13:45:44 -07:00
import * as monitoring from './monitoring';
import * as perf from './performance';
2020-03-27 13:59:38 -07:00
import ready from './ready';
2022-06-23 15:53:04 -07:00
const messages = defineMessages({
update: { id: 'sw.update', defaultMessage: 'Update' },
updateText: { id: 'sw.update_text', defaultMessage: 'An update is available.' },
});
2020-03-27 13:59:38 -07:00
function main() {
perf.start('main()');
2021-09-08 13:45:44 -07:00
// Sentry
monitoring.start();
// Print console warning
if (BuildConfig.NODE_ENV === 'production') {
printConsoleWarning();
}
2020-03-27 13:59:38 -07:00
ready(() => {
const mountNode = document.getElementById('soapbox') as HTMLElement;
2020-03-27 13:59:38 -07:00
2020-05-28 15:52:07 -07:00
ReactDOM.render(<Soapbox />, mountNode);
2021-09-05 14:42:48 -07:00
if (BuildConfig.NODE_ENV === 'production') {
2022-04-05 12:43:29 -07:00
// avoid offline in dev mode because it's harder to debug
// https://github.com/NekR/offline-plugin/pull/201#issuecomment-285133572
OfflinePluginRuntime.install({
onUpdateReady: function() {
2022-06-23 15:53:04 -07:00
store.dispatch(snackbar.show('info', messages.updateText, {
actionLabel: messages.update,
action: () => {
store.dispatch(setSwUpdating(true));
2022-06-23 15:53:04 -07:00
OfflinePluginRuntime.applyUpdate();
},
2022-06-23 16:03:35 -07:00
dismissAfter: false,
}));
},
onUpdated: function() {
window.location.reload();
},
});
2022-04-05 12:43:29 -07:00
}
2020-03-27 13:59:38 -07:00
perf.stop('main()');
});
}
export default main;