diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-10-11 11:39:52 +0200 |
---|---|---|
committer | Claire <claire.github-309c@sitedethib.com> | 2022-10-11 12:25:45 +0200 |
commit | b75bf336bdb874eb9bbe3cec1a95ee59c2b3b54c (patch) | |
tree | c7921b7390c6b5976f50063a94f2346630c3e5fa /app/javascript/flavours/glitch/main.js | |
parent | 2535ec4fcb6247199a5746db1119d3dabed9d559 (diff) |
Move more modules from flavours/glitch/utils to flavours/glitch
Diffstat (limited to 'app/javascript/flavours/glitch/main.js')
-rw-r--r-- | app/javascript/flavours/glitch/main.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/main.js b/app/javascript/flavours/glitch/main.js new file mode 100644 index 000000000..04efcd43f --- /dev/null +++ b/app/javascript/flavours/glitch/main.js @@ -0,0 +1,57 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import { setupBrowserNotifications } from 'flavours/glitch/actions/notifications'; +import Mastodon, { store } from 'flavours/glitch/containers/mastodon'; +import ready from 'flavours/glitch/ready'; + +const perf = require('flavours/glitch/performance'); + +/** + * @returns {Promise<void>} + */ +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}`); + } + } + + return ready(async () => { + const mountNode = document.getElementById('mastodon'); + const props = JSON.parse(mountNode.getAttribute('data-props')); + + ReactDOM.render(<Mastodon {...props} />, mountNode); + store.dispatch(setupBrowserNotifications()); + + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + const [{ Workbox }, { me }] = await Promise.all([ + import('workbox-window'), + import('mastodon/initial_state'), + ]); + + const wb = new Workbox('/sw.js'); + + try { + await wb.register(); + } catch (err) { + console.error(err); + + return; + } + + if (me) { + const registerPushNotifications = await import('flavours/glitch/actions/push_notifications'); + + store.dispatch(registerPushNotifications.register()); + } + } + + perf.stop('main()'); + }); +} + +export default main; |