diff options
author | Andrew Dolgov <[email protected]> | 2018-12-02 21:52:50 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2018-12-02 21:52:50 +0300 |
commit | ac8361e6f6e81e25d3c17e14b973af53a9b93885 (patch) | |
tree | 96f11d780211e203ff54b75b512682d684c43846 /js/prefs.js | |
parent | eeb49d375ce7e6addc382bab1a1545e897bb1771 (diff) |
add AppBase as a shared ancestor for main and prefs app objects
remove event.observe stuff from startup, unneeded
Diffstat (limited to 'js/prefs.js')
-rwxr-xr-x | js/prefs.js | 249 |
1 files changed, 129 insertions, 120 deletions
diff --git a/js/prefs.js b/js/prefs.js index a1866f478..75f285b38 100755 --- a/js/prefs.js +++ b/js/prefs.js @@ -1,64 +1,67 @@ 'use strict' /* global dijit, __ */ +let App; let Utils; let CommonDialogs; let Filters; let Users; let Prefs; -const App = { - init: function() { - window.onerror = function (message, filename, lineno, colno, error) { - report_error(message, filename, lineno, colno, error); - }; - - require(["dojo/_base/kernel", - "dojo/ready", - "dojo/parser", - "dojo/_base/loader", - "dojo/_base/html", - "dijit/ColorPalette", - "dijit/Dialog", - "dijit/form/Button", - "dijit/form/CheckBox", - "dijit/form/DropDownButton", - "dijit/form/FilteringSelect", - "dijit/form/MultiSelect", - "dijit/form/Form", - "dijit/form/RadioButton", - "dijit/form/ComboButton", - "dijit/form/Select", - "dijit/form/SimpleTextarea", - "dijit/form/TextBox", - "dijit/form/ValidationTextBox", - "dijit/InlineEditBox", - "dijit/layout/AccordionContainer", - "dijit/layout/AccordionPane", - "dijit/layout/BorderContainer", - "dijit/layout/ContentPane", - "dijit/layout/TabContainer", - "dijit/Menu", - "dijit/ProgressBar", - "dijit/Toolbar", - "dijit/Tree", - "dijit/tree/dndSource", - "dojo/data/ItemFileWriteStore", - "lib/CheckBoxStoreModel", - "lib/CheckBoxTree", - "fox/Utils", - "fox/CommonDialogs", - "fox/CommonFilters", - "fox/PrefUsers", - "fox/PrefHelpers", - "fox/PrefFeedStore", - "fox/PrefFilterStore", - "fox/PrefFeedTree", - "fox/PrefFilterTree", - "fox/PrefLabelTree"], function (dojo, ready, parser) { - - ready(function () { - try { +require(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/ready", + "dojo/parser", + "fox/AppBase", + "dojo/_base/loader", + "dojo/_base/html", + "dijit/ColorPalette", + "dijit/Dialog", + "dijit/form/Button", + "dijit/form/CheckBox", + "dijit/form/DropDownButton", + "dijit/form/FilteringSelect", + "dijit/form/MultiSelect", + "dijit/form/Form", + "dijit/form/RadioButton", + "dijit/form/ComboButton", + "dijit/form/Select", + "dijit/form/SimpleTextarea", + "dijit/form/TextBox", + "dijit/form/ValidationTextBox", + "dijit/InlineEditBox", + "dijit/layout/AccordionContainer", + "dijit/layout/AccordionPane", + "dijit/layout/BorderContainer", + "dijit/layout/ContentPane", + "dijit/layout/TabContainer", + "dijit/Menu", + "dijit/ProgressBar", + "dijit/Toolbar", + "dijit/Tree", + "dijit/tree/dndSource", + "dojo/data/ItemFileWriteStore", + "lib/CheckBoxStoreModel", + "lib/CheckBoxTree", + "fox/Utils", + "fox/CommonDialogs", + "fox/CommonFilters", + "fox/PrefUsers", + "fox/PrefHelpers", + "fox/PrefFeedStore", + "fox/PrefFilterStore", + "fox/PrefFeedTree", + "fox/PrefFilterTree", + "fox/PrefLabelTree"], function (dojo, declare, ready, parser, AppBase) { + + ready(function () { + try { + const _App = declare("fox.App", AppBase, { + constructor: function() { + window.onerror = function (message, filename, lineno, colno, error) { + report_error(message, filename, lineno, colno, error); + }; + Utils = fox.Utils(); CommonDialogs = fox.CommonDialogs(); Filters = fox.CommonFilters(); @@ -73,81 +76,87 @@ const App = { const params = {op: "rpc", method: "sanityCheck", clientTzOffset: clientTzOffset}; xhrPost("backend.php", params, (transport) => { - Utils.backendSanityCallback(transport); + try { + Utils.backendSanityCallback(transport); + } catch (e) { + exception_error(e); + } }); + }, + initSecondStage: function() { + document.onkeydown = () => { App.hotkeyHandler(event) }; + Utils.setLoadingProgress(50); + Notify.close(); - } catch (e) { - exception_error(e); - } - }); - }); - }, - initSecondStage: function() { - document.onkeydown = () => { App.hotkeyHandler(event) }; - Utils.setLoadingProgress(50); - Notify.close(); - - let tab = Utils.urlParam('tab'); - - if (tab) { - tab = dijit.byId(tab + "Tab"); - if (tab) { - dijit.byId("pref-tabs").selectChild(tab); - - switch (Utils.urlParam('method')) { - case "editfeed": - window.setTimeout(function () { - CommonDialogs.editFeed(Utils.urlParam('methodparam')) - }, 100); - break; - default: - console.warn("initSecondStage, unknown method:", Utils.urlParam("method")); - } - } - } else { - let tab = localStorage.getItem("ttrss:prefs-tab"); + let tab = Utils.urlParam('tab'); + + if (tab) { + tab = dijit.byId(tab + "Tab"); + if (tab) { + dijit.byId("pref-tabs").selectChild(tab); + + switch (Utils.urlParam('method')) { + case "editfeed": + window.setTimeout(function () { + CommonDialogs.editFeed(Utils.urlParam('methodparam')) + }, 100); + break; + default: + console.warn("initSecondStage, unknown method:", Utils.urlParam("method")); + } + } + } else { + let tab = localStorage.getItem("ttrss:prefs-tab"); + + if (tab) { + tab = dijit.byId(tab); + if (tab) { + dijit.byId("pref-tabs").selectChild(tab); + } + } + } + + dojo.connect(dijit.byId("pref-tabs"), "selectChild", function (elem) { + localStorage.setItem("ttrss:prefs-tab", elem.id); + }); - if (tab) { - tab = dijit.byId(tab); - if (tab) { - dijit.byId("pref-tabs").selectChild(tab); + }, + hotkeyHandler: function (event) { + if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return; + + const action_name = Utils.keyeventToAction(event); + + if (action_name) { + switch (action_name) { + case "feed_subscribe": + CommonDialogs.quickAddFeed(); + return false; + case "create_label": + CommonDialogs.addLabel(); + return false; + case "create_filter": + Filters.quickAddFilter(); + return false; + case "help_dialog": + Utils.helpDialog("main"); + return false; + default: + console.log("unhandled action: " + action_name + "; keycode: " + event.which); + } + } + }, + isPrefs: function() { + return true; } - } - } + }); - dojo.connect(dijit.byId("pref-tabs"), "selectChild", function (elem) { - localStorage.setItem("ttrss:prefs-tab", elem.id); - }); + App = new _App(); - }, - hotkeyHandler: function (event) { - if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return; - - const action_name = Utils.keyeventToAction(event); - - if (action_name) { - switch (action_name) { - case "feed_subscribe": - CommonDialogs.quickAddFeed(); - return false; - case "create_label": - CommonDialogs.addLabel(); - return false; - case "create_filter": - Filters.quickAddFilter(); - return false; - case "help_dialog": - Utils.helpDialog("main"); - return false; - default: - console.log("unhandled action: " + action_name + "; keycode: " + event.which); - } + } catch (e) { + exception_error(e); } - }, - isPrefs: function() { - return true; - } -}; + }); +}); function opmlImportComplete(iframe) { if (!iframe.contentDocument.body.innerHTML) return false; |