You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					55 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					55 lines
				
				1.6 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'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;
							 |