• Jump To … +
    ClientController.js ClientRequest.js ExpressServerRequest.js ReactServerAgent.js Cache.js Plugins.js Request.js handlePage.js loggingClient.js ClientRequestSpec.js NormalValuesPage.js NullValuePromisesPage.js NullValuesPage.js reactMiddlewareSpec.js client.js common.js History.js RootContainer.js RootElement.js TheFold.js config.js constants.js Navigator.js RequestContext.js logging.js client.js common.js response.js server.js stats.js renderMiddleware.js server.js ClientCssHelper.js DebugUtil.js PageUtil.js RequestLocalStorage.js StringEscapeUtil.js bundleNameUtil.js navigateTo.js
  • RequestContext.js

  • ¶
    var Navigator = require('./Navigator'),
    	RequestLocals = require('../util/RequestLocalStorage').getNamespace();
    
    class RequestContext {
    
    	constructor (routes) {
    
    		this.navigator = new Navigator(this, routes);
    
    		this.navigator.on('page', page => {this.page = page});
    
    		this._navigateListeners = [];
    
    		this.registerRequestLocal();
    	}
    
    	static getCurrentRequestContext () {
    		return RequestLocals().instance;
    	}
  • ¶

    when we transition from page to page, we clear out the RequestLocals, but we need to re-register the RequestContext in the RequestLocals.

    	registerRequestLocal() {
    		RequestLocals().instance = this;
    	}
    
    	setServerStash (stash) {
    		this.serverStash = stash;
    		return this;
    	}
    
    	getServerStash () {
    		return this.serverStash;
    	}
    
    	setDeviceType (type) {
    		this.deviceType = type;
    		return this;
    	}
    
    	getDeviceType () {
    		return this.deviceType;
    	}
    
    	getCurrentPath () {
    		return this.navigator.getCurrentRoute().url;
    	}
    
    	onNavigate (callback) {
    		this.navigator.on('navigateDone', callback);
    	}
    
    	onNavigateStart (callback) {
    		this.navigator.on('navigateStart', callback);
    	}
    
    	onLoadComplete (callback) {
    		this.navigator.on('loadComplete', callback);
    	}
    
    	navigate (request, type) {
    		this.navigator.navigate(request, type);
    	}
    
    }
    
    class RequestContextBuilder {
    
    	constructor () {
    	}
    
    	setRoutes(routes) {
    		this.routes = routes;
    		return this;
    	}
    
    	setDefaultXhrHeadersFromRequest () {
    		return this;
    	}
    
    	create (extraOpts) {
    
    		return new RequestContext(this.routes, extraOpts);
    	}
    
    }
    
    module.exports = RequestContext;
    module.exports.Builder = RequestContextBuilder;