diff --git a/src/octoprint/static/js/app/main.js b/src/octoprint/static/js/app/main.js index 73fe2c04..aa90c594 100644 --- a/src/octoprint/static/js/app/main.js +++ b/src/octoprint/static/js/app/main.js @@ -476,6 +476,12 @@ $(function() { } }); log.info("... binding done"); + + _.each(allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onStartupComplete")) { + viewModel.onStartupComplete(); + } + }); }; if (!_.has(viewModelMap, "settingsViewModel")) { diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js index cde25948..49c2666b 100644 --- a/src/octoprint/static/js/app/viewmodels/files.js +++ b/src/octoprint/static/js/app/viewmodels/files.js @@ -323,6 +323,14 @@ $(function() { self.requestData(); }; + self.onUserLoggedIn = function(user) { + self.uploadButton.fileupload("enable"); + }; + + self.onUserLoggedOut = function() { + self.uploadButton.fileupload("disable"); + }; + self.onStartup = function() { $(".accordion-toggle[data-target='#files']").click(function() { var files = $("#files"); @@ -347,14 +355,6 @@ $(function() { //~~ Gcode upload self.uploadButton = $("#gcode_upload"); - self.loginState.subscribe(function(change, data) { - if ("login" == change) { - self.uploadButton.fileupload("enable"); - } else { - self.uploadButton.fileupload("disable"); - } - }); - function gcode_upload_done(e, data) { var filename = undefined; var location = undefined; diff --git a/src/octoprint/static/js/app/viewmodels/log.js b/src/octoprint/static/js/app/viewmodels/log.js index e0239bda..fa42aeed 100644 --- a/src/octoprint/static/js/app/viewmodels/log.js +++ b/src/octoprint/static/js/app/viewmodels/log.js @@ -61,12 +61,10 @@ $(function() { }); }; - self.onDataUpdaterReconnect = function() { - self.requestData(); - }; - - self.onStartup = function() { - self.requestData(); + self.onUserLoggedIn = function(user) { + if (user.admin) { + self.requestData(); + } }; } diff --git a/src/octoprint/static/js/app/viewmodels/loginstate.js b/src/octoprint/static/js/app/viewmodels/loginstate.js index 74c91b54..25e126c6 100644 --- a/src/octoprint/static/js/app/viewmodels/loginstate.js +++ b/src/octoprint/static/js/app/viewmodels/loginstate.js @@ -11,6 +11,8 @@ $(function() { self.isAdmin = ko.observable(false); self.isUser = ko.observable(false); + self.allViewModels = undefined; + self.currentUser = ko.observable(undefined); self.userMenuText = ko.computed(function() { @@ -21,12 +23,6 @@ $(function() { } }); - self.subscribers = []; - self.subscribe = function(callback) { - if (callback === undefined) return; - self.subscribers.push(callback); - }; - self.reloadUser = function() { if (self.currentUser() == undefined) { return; @@ -57,7 +53,11 @@ $(function() { self.currentUser(response); - _.each(self.subscribers, function(callback) { callback("login", response); }); + _.each(self.allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onUserLoggedIn")) { + viewModel.onUserLoggedIn(response); + } + }); } else { self.loggedIn(false); self.username(undefined); @@ -66,7 +66,11 @@ $(function() { self.currentUser(undefined); - _.each(self.subscribers, function(callback) { callback("logout", {}); }); + _.each(self.allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onUserLoggedOut")) { + viewModel.onUserLoggedOut(); + } + }); } }; @@ -116,11 +120,15 @@ $(function() { } }; + self.onAllBound = function(allViewModels) { + self.allViewModels = allViewModels; + }; + self.onDataUpdaterReconnect = function() { self.requestData(); }; - self.onStartup = function() { + self.onStartupComplete = function() { self.requestData(); }; } diff --git a/src/octoprint/static/js/app/viewmodels/users.js b/src/octoprint/static/js/app/viewmodels/users.js index b1d14dc1..c341a067 100644 --- a/src/octoprint/static/js/app/viewmodels/users.js +++ b/src/octoprint/static/js/app/viewmodels/users.js @@ -57,12 +57,6 @@ $(function() { return self.editorPassword() != self.editorRepeatedPassword(); }); - self.loginState.subscribe(function(change, data) { - if (change == "login" && data.admin) { - self.requestData(); - } - }); - self.requestData = function() { if (!CONFIG_ACCESS_CONTROL) return; @@ -267,6 +261,12 @@ $(function() { } } }); + }; + + self.onUserLoggedIn = function(user) { + if (user.admin) { + self.requestData(); + } } }