cc2b7bc8fa
* refactor(on-demand-entries): extract method: setupPing * Setup ping for amp pages * Missed a call
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
/* globals __webpack_hash__ */
|
|
import EventSourcePolyfill from './event-source-polyfill'
|
|
import { getEventSourceWrapper } from './dev-error-overlay/eventsource'
|
|
import { setupPing } from './on-demand-entries-utils'
|
|
|
|
if (!window.EventSource) {
|
|
window.EventSource = EventSourcePolyfill
|
|
}
|
|
|
|
const data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent)
|
|
let { assetPrefix, page } = data
|
|
assetPrefix = assetPrefix || ''
|
|
|
|
getEventSourceWrapper({
|
|
path: `${assetPrefix}/_next/webpack-hmr`
|
|
}).addMessageListener(event => {
|
|
if (event.data === '\uD83D\uDC93') {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const message = JSON.parse(event.data)
|
|
|
|
if (message.action === 'sync' || message.action === 'built') {
|
|
if (!message.hash) {
|
|
return
|
|
}
|
|
|
|
/* eslint-disable-next-line camelcase */
|
|
if (message.hash !== __webpack_hash__) {
|
|
document.location.reload(true)
|
|
}
|
|
} else if (message.action === 'reloadPage') {
|
|
document.location.reload(true)
|
|
}
|
|
} catch (ex) {
|
|
console.warn('Invalid HMR message: ' + event.data + '\n' + ex)
|
|
}
|
|
})
|
|
|
|
setupPing(assetPrefix, () => page)
|