12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 'use strict';
- /* global WorkerGlobalScope self */
- var _require = require('./log'),
- log = _require.log;
- function reloadApp(_ref, _ref2) {
- var hotReload = _ref.hotReload,
- hot = _ref.hot,
- liveReload = _ref.liveReload;
- var isUnloading = _ref2.isUnloading,
- currentHash = _ref2.currentHash;
- if (isUnloading || !hotReload) {
- return;
- }
- if (hot) {
- log.info('[WDS] App hot update...');
- var hotEmitter = require('webpack/hot/emitter');
- hotEmitter.emit('webpackHotUpdate', currentHash);
- if (typeof self !== 'undefined' && self.window) {
- // broadcast update to window
- self.postMessage("webpackHotUpdate".concat(currentHash), '*');
- }
- } // allow refreshing the page only if liveReload isn't disabled
- else if (liveReload) {
- var rootWindow = self; // use parent window for reload (in case we're in an iframe with no valid src)
- var intervalId = self.setInterval(function () {
- if (rootWindow.location.protocol !== 'about:') {
- // reload immediately if protocol is valid
- applyReload(rootWindow, intervalId);
- } else {
- rootWindow = rootWindow.parent;
- if (rootWindow.parent === rootWindow) {
- // if parent equals current window we've reached the root which would continue forever, so trigger a reload anyways
- applyReload(rootWindow, intervalId);
- }
- }
- });
- }
- function applyReload(rootWindow, intervalId) {
- clearInterval(intervalId);
- log.info('[WDS] App updated. Reloading...');
- rootWindow.location.reload();
- }
- }
- module.exports = reloadApp;
|