From 44a7d87cb1f5df953b6c14c16c59e2e4ead1bcb9 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 20 Feb 2023 03:20:59 +0100 Subject: Rename JSX files with proper `.jsx` extension (#23733) --- app/javascript/mastodon/main.jsx | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 app/javascript/mastodon/main.jsx (limited to 'app/javascript/mastodon/main.jsx') diff --git a/app/javascript/mastodon/main.jsx b/app/javascript/mastodon/main.jsx new file mode 100644 index 000000000..69a7ee91f --- /dev/null +++ b/app/javascript/mastodon/main.jsx @@ -0,0 +1,46 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import { setupBrowserNotifications } from 'mastodon/actions/notifications'; +import Mastodon, { store } from 'mastodon/containers/mastodon'; +import { me } from 'mastodon/initial_state'; +import ready from 'mastodon/ready'; + +const perf = require('mastodon/performance'); + +/** + * @returns {Promise} + */ +function main() { + perf.start('main()'); + + return ready(async () => { + const mountNode = document.getElementById('mastodon'); + const props = JSON.parse(mountNode.getAttribute('data-props')); + + ReactDOM.render(, mountNode); + store.dispatch(setupBrowserNotifications()); + + if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) { + const { Workbox } = await import('workbox-window'); + const wb = new Workbox('/sw.js'); + /** @type {ServiceWorkerRegistration} */ + let registration; + + try { + registration = await wb.register(); + } catch (err) { + console.error(err); + } + + if (registration) { + const registerPushNotifications = await import('mastodon/actions/push_notifications'); + + store.dispatch(registerPushNotifications.register()); + } + } + + perf.stop('main()'); + }); +} + +export default main; -- cgit