luci-base: luci.js: cache determined RPC base url in session storage
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
ffdafd4800
commit
66dfe64ca1
1 changed files with 32 additions and 8 deletions
|
@ -210,8 +210,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
var requestQueue = [],
|
var requestQueue = [];
|
||||||
rpcBaseURL = null;
|
|
||||||
|
|
||||||
function isQueueableRequest(opt) {
|
function isQueueableRequest(opt) {
|
||||||
if (!classes.rpc)
|
if (!classes.rpc)
|
||||||
|
@ -223,8 +222,7 @@
|
||||||
if (opt.nobatch === true)
|
if (opt.nobatch === true)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (rpcBaseURL == null)
|
var rpcBaseURL = Request.expandURL(classes.rpc.getBaseURL());
|
||||||
rpcBaseURL = Request.expandURL(classes.rpc.getBaseURL());
|
|
||||||
|
|
||||||
return (rpcBaseURL != null && opt.url.indexOf(rpcBaseURL) == 0);
|
return (rpcBaseURL != null && opt.url.indexOf(rpcBaseURL) == 0);
|
||||||
}
|
}
|
||||||
|
@ -544,6 +542,7 @@
|
||||||
var dummyElem = null,
|
var dummyElem = null,
|
||||||
domParser = null,
|
domParser = null,
|
||||||
originalCBIInit = null,
|
originalCBIInit = null,
|
||||||
|
rpcBaseURL = null,
|
||||||
classes = {};
|
classes = {};
|
||||||
|
|
||||||
var LuCI = Class.extend({
|
var LuCI = Class.extend({
|
||||||
|
@ -581,7 +580,7 @@
|
||||||
this.require('ui'),
|
this.require('ui'),
|
||||||
this.require('rpc'),
|
this.require('rpc'),
|
||||||
this.require('form'),
|
this.require('form'),
|
||||||
Request.get('/ubus/').catch(function() { return { status: 0 } })
|
this.probeRPCBaseURL()
|
||||||
]).then(this.setupDOM.bind(this)).catch(this.error);
|
]).then(this.setupDOM.bind(this)).catch(this.error);
|
||||||
|
|
||||||
originalCBIInit = window.cbi_init;
|
originalCBIInit = window.cbi_init;
|
||||||
|
@ -754,15 +753,40 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
/* DOM setup */
|
/* DOM setup */
|
||||||
|
probeRPCBaseURL: function() {
|
||||||
|
if (rpcBaseURL == null) {
|
||||||
|
try {
|
||||||
|
rpcBaseURL = window.sessionStorage.getItem('rpcBaseURL');
|
||||||
|
}
|
||||||
|
catch (e) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rpcBaseURL == null) {
|
||||||
|
rpcBaseURL = Request.get('/ubus/').then(function(res) {
|
||||||
|
return (rpcBaseURL = (res.status == 400) ? '/ubus/' : this.url('admin/ubus'));
|
||||||
|
}, function() {
|
||||||
|
return (rpcBaseURL = L.url('admin/ubus'));
|
||||||
|
}).then(function(url) {
|
||||||
|
try {
|
||||||
|
window.sessionStorage.setItem('rpcBaseURL', url);
|
||||||
|
}
|
||||||
|
catch (e) { }
|
||||||
|
|
||||||
|
return url;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve(rpcBaseURL);
|
||||||
|
},
|
||||||
|
|
||||||
setupDOM: function(res) {
|
setupDOM: function(res) {
|
||||||
var domEv = res[0],
|
var domEv = res[0],
|
||||||
uiClass = res[1],
|
uiClass = res[1],
|
||||||
rpcClass = res[2],
|
rpcClass = res[2],
|
||||||
formClass = res[3],
|
formClass = res[3],
|
||||||
ubusReply = res[4];
|
rpcBaseURL = res[4];
|
||||||
|
|
||||||
if (ubusReply.status == 400)
|
rpcClass.setBaseURL(rpcBaseURL);
|
||||||
rpcClass.setBaseURL('/ubus/');
|
|
||||||
|
|
||||||
Request.addInterceptor(function(res) {
|
Request.addInterceptor(function(res) {
|
||||||
if (res.status != 403 || res.headers.get('X-LuCI-Login-Required') != 'yes')
|
if (res.status != 403 || res.headers.get('X-LuCI-Login-Required') != 'yes')
|
||||||
|
|
Loading…
Reference in a new issue