From 39182a76e4070d3b92af10bf609fef8151bce6e4 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sun, 12 Oct 2025 21:02:39 +0000 Subject: Address ESLint rule 'eqeqeq'. https://eslint.org/docs/latest/rules/eqeqeq --- js/App.js | 59 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 30 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index 33bd81d9a..c727cc947 100644 --- a/js/App.js +++ b/js/App.js @@ -2,7 +2,7 @@ /* eslint-disable new-cap */ /* global __, Article, Headlines, Filters, fox */ -/* global xhr, dojo, dijit, PluginHost, Notify, Feeds, Cookie */ +/* global xhr, PluginHost, Notify, Feeds, Cookie */ /* global CommonDialogs, Plugins */ const App = { @@ -75,7 +75,7 @@ const App = { return ` ` @@ -89,7 +89,7 @@ const App = { return ` ` @@ -333,7 +333,7 @@ const App = { for (const seq in hotkeys_map[1]) { if (hotkeys_map[1].hasOwnProperty(seq)) { - if (seq == sequence) { + if (seq === sequence) { return hotkeys_map[1][seq]; } } @@ -345,11 +345,11 @@ const App = { const keycode = event.which; const keychar = String.fromCharCode(keycode); - if (keycode == 27) { // escape and drop prefix + if (keycode === 27) { // escape and drop prefix this.hotkey_prefix = false; } - if (!this.hotkey_prefix && hotkeys_map[0].indexOf(keychar) != -1) { + if (!this.hotkey_prefix && hotkeys_map[0].indexOf(keychar) !== -1) { this.hotkey_prefix = keychar; App.byId("cmdline").innerHTML = keychar; @@ -370,7 +370,7 @@ const App = { let hotkey_name = ""; - if (event.type == "keydown") { + if (event.type === 'keydown') { hotkey_name = "(" + keycode + ")"; // ensure ^*char notation @@ -473,20 +473,20 @@ const App = { const counters = reply['counters']; const runtime_info = reply['runtime-info']; - if (error && error.code && error.code != App.Error.E_SUCCESS) { + if (error && error.code && error.code !== App.Error.E_SUCCESS) { console.warn("handleRpcJson: fatal error", error); this.Error.fatal(error.code, error.params); return false; } - if (seq && this.get_seq() != seq) { + if (seq && this.get_seq() !== seq) { console.warn("handleRpcJson: sequence mismatch: ", seq, '!=', this.get_seq()); return false; } // not in preferences - if (typeof Feeds != "undefined") { - if (message == "UPDATE_COUNTERS") { + if (typeof Feeds !== 'undefined') { + if (message === 'UPDATE_COUNTERS') { console.log("need to refresh counters for", reply.feeds); Feeds.requestCounters(reply.feeds); } @@ -515,12 +515,12 @@ const App = { console.log("RI:", k, "=>", v); - if (k == "daemon_is_running" && v != 1) { + if (k === "daemon_is_running" && v !== 1) { Notify.error("Update daemon is not running.", true); return; } - if (k == "recent_log_events") { + if (k === "recent_log_events") { const alert = App.find(".log-alert"); if (alert) { @@ -528,14 +528,14 @@ const App = { } } - if (k == "daemon_stamp_ok" && v != 1) { + if (k === "daemon_stamp_ok" && v !== 1) { Notify.error("Update daemon is not updating feeds.", true); return; } - if (typeof Feeds != "undefined") { - if (k == "max_feed_id" || k == "num_feeds") { - if (this.getInitParam(k) && this.getInitParam(k) != v) { + if (typeof Feeds !== 'undefined') { + if (k === "max_feed_id" || k === "num_feeds") { + if (this.getInitParam(k) && this.getInitParam(k) !== v) { console.log("feed count changed, need to reload feedlist:", this.getInitParam(k), v); Feeds.reload(); } @@ -609,13 +609,13 @@ const App = { E_SCHEMA_MISMATCH: "E_SCHEMA_MISMATCH", E_URL_SCHEME_MISMATCH: "E_URL_SCHEME_MISMATCH", fatal: function (error, params = {}) { - if (error == App.Error.E_UNAUTHORIZED) { + if (error === App.Error.E_UNAUTHORIZED) { window.location.href = "index.php"; return; - } else if (error == App.Error.E_SCHEMA_MISMATCH) { + } else if (error === App.Error.E_SCHEMA_MISMATCH) { window.location.href = "public.php?op=dbupdate"; return; - } else if (error == App.Error.E_URL_SCHEME_MISMATCH) { + } else if (error === App.Error.E_URL_SCHEME_MISMATCH) { params.description = __("URL scheme reported by your browser (%a) doesn't match server-configured SELF_URL_PATH (%b), check X-Forwarded-Proto.") .replace("%a", params.client_scheme) .replace("%b", params.server_scheme); @@ -744,12 +744,12 @@ const App = { } }); - if (typeof Promise.allSettled == "undefined") { + if (typeof Promise.allSettled === "undefined") { errorMsg = `Browser check failed: Promise.allSettled is not defined.`; throw new Error(errorMsg); } - return errorMsg == ""; + return errorMsg === ""; }, updateRuntimeInfo: function() { xhr.json("backend.php", {op: "RPC", method: "getruntimeinfo"}, () => { @@ -902,18 +902,17 @@ const App = { document.title = tmp; }, hotkeyHandler: function(event) { - if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") return; + if (event.target.nodeName === "INPUT" || event.target.nodeName === "TEXTAREA") return; // Arrow buttons and escape are not reported via keypress, handle them via keydown. // escape = 27, left = 37, up = 38, right = 39, down = 40, pgup = 33, pgdn = 34, insert = 45, delete = 46 - if (event.type == "keydown" && event.which != 27 && (event.which < 33 || event.which > 46)) return; - + if (event.type === "keydown" && event.which !== 27 && (event.which < 33 || event.which > 46)) return; const action_name = this.keyeventToAction(event); if (action_name) { const action_func = this.hotkey_actions[action_name]; - if (action_func != null) { + if (action_func !== null) { action_func(event); event.stopPropagation(); return false; @@ -1120,7 +1119,7 @@ const App = { } }; this.hotkey_actions["email_article"] = () => { - if (typeof Plugins.Mail != "undefined") { + if (typeof Plugins.Mail !== "undefined") { Plugins.Mail.onHotkey(Headlines.getSelected()); } else { alert(__("Please enable mail or mailto plugin first.")); @@ -1145,7 +1144,7 @@ const App = { Headlines.select('none'); }; this.hotkey_actions["feed_refresh"] = () => { - if (typeof Feeds.getActive() != "undefined") { + if (typeof Feeds.getActive() !== "undefined") { Feeds.open({feed: Feeds.getActive(), is_cat: Feeds.activeIsCat()}); } }; @@ -1191,7 +1190,7 @@ const App = { CommonDialogs.editFeed(Feeds.getActive()); }; this.hotkey_actions["feed_catchup"] = () => { - if (typeof Feeds.getActive() != "undefined") { + if (typeof Feeds.getActive() !== "undefined") { Feeds.catchupCurrent(); } }; @@ -1254,7 +1253,7 @@ const App = { Feeds.toggle(); }; this.hotkey_actions["toggle_full_text"] = () => { - if (typeof Plugins.Af_Readability != "undefined") { + if (typeof Plugins.Af_Readability !== "undefined") { if (Article.getActive()) Plugins.Af_Readability.embed(Article.getActive()); } else { -- cgit v1.2.3-54-g00ecf From d442079a72dd575704a5eff6cafe325eabca71c2 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sun, 12 Oct 2025 21:38:59 +0000 Subject: Address ESLint rule 'no-prototype-builtins'. https://eslint.org/docs/latest/rules/no-prototype-builtins --- js/App.js | 2 +- js/CommonDialogs.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index c727cc947..97323a9bc 100644 --- a/js/App.js +++ b/js/App.js @@ -332,7 +332,7 @@ const App = { const hotkeys_map = this.getInitParam("hotkeys"); for (const seq in hotkeys_map[1]) { - if (hotkeys_map[1].hasOwnProperty(seq)) { + if (Object.prototype.hasOwnProperty.call(hotkeys_map[1], seq)) { if (seq === sequence) { return hotkeys_map[1][seq]; } diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js index a9395d62e..9c6d1338b 100644 --- a/js/CommonDialogs.js +++ b/js/CommonDialogs.js @@ -184,7 +184,7 @@ const CommonDialogs = { select.addOption({value: '', label: __("Expand to select feed")}); for (const feedUrl in feeds) { - if (feeds.hasOwnProperty(feedUrl)) { + if (Object.prototype.hasOwnProperty.call(feeds, feedUrl)) { select.addOption({value: feedUrl, label: feeds[feedUrl]}); } } -- cgit v1.2.3-54-g00ecf From 360c552da41b08d92c8d5e0d01968ffe1e8e6323 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sun, 12 Oct 2025 21:48:10 +0000 Subject: Address rule 'no-redeclare' for 'dojo' and 'dijit' (defined as globals in 'eslint.config.js'). Also take care of 2 'no-prototype-builtins' and a 'no-useless-escape'. * https://eslint.org/docs/latest/rules/no-redeclare * https://eslint.org/docs/latest/rules/no-prototype-builtins * https://eslint.org/docs/latest/rules/no-useless-escape --- js/App.js | 2 +- js/Article.js | 2 +- js/CommonDialogs.js | 2 +- js/CommonFilters.js | 2 +- js/FeedStoreModel.js | 2 +- js/FeedTree.js | 2 +- js/Feeds.js | 2 +- js/Headlines.js | 2 +- js/PrefFeedStore.js | 2 +- js/PrefFeedTree.js | 2 +- js/PrefFilterStore.js | 2 +- js/PrefFilterTree.js | 2 +- js/PrefHelpers.js | 2 +- js/PrefLabelTree.js | 2 +- js/PrefUsers.js | 2 +- js/SingleUseDialog.js | 2 +- js/Toolbar.js | 2 +- js/common.js | 2 +- js/form/ComboButton.js | 2 +- js/form/DropDownButton.js | 2 +- js/tt-rss.js | 2 +- plugins/af_psql_trgm/init.js | 2 +- plugins/share/share.js | 2 +- plugins/shorten_expanded/init.js | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index 97323a9bc..80fbabe82 100644 --- a/js/App.js +++ b/js/App.js @@ -423,7 +423,7 @@ const App = { '/': '/', }; - return p.replace(/[&<>"'\/]/g, m => map[m]); + return p.replace(/[&<>"'/]/g, m => map[m]); }, unescapeHtml: function(p) { if (typeof p !== 'string' || p.indexOf('&') === -1) diff --git a/js/Article.js b/js/Article.js index b38cb50c6..1f4cf931e 100644 --- a/js/Article.js +++ b/js/Article.js @@ -1,7 +1,7 @@ 'use strict' /* eslint-disable no-new */ -/* global __, ngettext, App, Headlines, xhr, dojo, dijit, PluginHost, Notify, fox */ +/* global __, ngettext, App, Headlines, xhr, PluginHost, Notify, fox */ const Article = { _scroll_reset_timeout: false, diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js index 9c6d1338b..43c22b5f6 100644 --- a/js/CommonDialogs.js +++ b/js/CommonDialogs.js @@ -3,7 +3,7 @@ /* eslint-disable new-cap */ /* eslint-disable no-new */ -/* global __, dojo, dijit, Notify, App, Feeds, xhr, Tables, fox */ +/* global __, Notify, App, Feeds, xhr, Tables, fox */ /* exported CommonDialogs */ const CommonDialogs = { diff --git a/js/CommonFilters.js b/js/CommonFilters.js index e27d3c40c..3e68168fe 100644 --- a/js/CommonFilters.js +++ b/js/CommonFilters.js @@ -3,7 +3,7 @@ /* eslint-disable no-new */ /* global __, App, Article, Lists, fox */ -/* global xhr, dojo, dijit, Notify, Feeds */ +/* global xhr, Notify, Feeds */ /* exported Filters */ const Filters = { diff --git a/js/FeedStoreModel.js b/js/FeedStoreModel.js index fa8f730d6..ef43357d0 100644 --- a/js/FeedStoreModel.js +++ b/js/FeedStoreModel.js @@ -1,4 +1,4 @@ -/* global define, dijit */ +/* global define */ define(["dojo/_base/declare", "dijit/tree/ForestStoreModel"], function (declare) { diff --git a/js/FeedTree.js b/js/FeedTree.js index cd7e1f311..09288845c 100755 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global __, dojo, dijit, define, App, Feeds, CommonDialogs */ +/* global __, define, App, Feeds, CommonDialogs */ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/cookie", "dijit/Tree", "dijit/Menu"], function (declare, domConstruct, array, cookie) { diff --git a/js/Feeds.js b/js/Feeds.js index 825f6f8ef..38e87b384 100644 --- a/js/Feeds.js +++ b/js/Feeds.js @@ -1,6 +1,6 @@ 'use strict' -/* global __, App, Headlines, xhr, dojo, dijit, fox, PluginHost, Notify, fox */ +/* global __, App, Headlines, xhr, fox, PluginHost, Notify, fox */ const Feeds = { FEED_ARCHIVED: 0, diff --git a/js/Headlines.js b/js/Headlines.js index 1547781c4..1a59ffda0 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -1,7 +1,7 @@ 'use strict'; /* global __, ngettext, Article, App */ -/* global dojo, dijit, PluginHost, Notify, xhr, Feeds */ +/* global PluginHost, Notify, xhr, Feeds */ /* global CommonDialogs */ const Headlines = { diff --git a/js/PrefFeedStore.js b/js/PrefFeedStore.js index 348cbd995..d03169acb 100644 --- a/js/PrefFeedStore.js +++ b/js/PrefFeedStore.js @@ -1,4 +1,4 @@ -/* global define, dojo */ +/* global define */ define(["dojo/_base/declare", "dojo/data/ItemFileWriteStore"], function (declare) { diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js index 7a7c5b551..92e748903 100644 --- a/js/PrefFeedTree.js +++ b/js/PrefFeedTree.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global __, lib, dijit, define, dojo, CommonDialogs, Notify, Tables, xhr, fox, App */ +/* global __, lib, define, CommonDialogs, Notify, Tables, xhr, fox, App */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_base/array", "dojo/cookie"], function (declare, domConstruct, checkBoxTree, array, cookie) { diff --git a/js/PrefFilterStore.js b/js/PrefFilterStore.js index f1192374a..f4cb8d0dd 100644 --- a/js/PrefFilterStore.js +++ b/js/PrefFilterStore.js @@ -1,4 +1,4 @@ -/* global define, dojo */ +/* global define */ define(["dojo/_base/declare", "dojo/data/ItemFileWriteStore"], function (declare) { diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js index 9a9728c08..64984b107 100644 --- a/js/PrefFilterTree.js +++ b/js/PrefFilterTree.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global __, define, lib, dijit, dojo, xhr, App, Notify, Filters */ +/* global __, define, lib, xhr, App, Notify, Filters */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], function (declare, domConstruct) { diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index b0b0d9c97..38fa7e243 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -1,7 +1,7 @@ 'use strict'; /* eslint-disable no-new */ -/* global __, dijit, dojo, Tables, Notify, xhr, App, fox */ +/* global __, Tables, Notify, xhr, App, fox */ const Helpers = { AppPasswords: { diff --git a/js/PrefLabelTree.js b/js/PrefLabelTree.js index c73a3ac46..1859906ee 100644 --- a/js/PrefLabelTree.js +++ b/js/PrefLabelTree.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global __, define, lib, dijit, dojo, xhr, Notify, fox, App */ +/* global __, define, lib, xhr, Notify, fox, App */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/form/DropDownButton"], function (declare, domConstruct) { diff --git a/js/PrefUsers.js b/js/PrefUsers.js index 362e62662..73e48b52f 100644 --- a/js/PrefUsers.js +++ b/js/PrefUsers.js @@ -1,6 +1,6 @@ 'use strict' -/* global __, xhr, dijit, Notify, Tables, App, fox */ +/* global __, xhr, Notify, Tables, App, fox */ const Users = { reload: function(sort) { diff --git a/js/SingleUseDialog.js b/js/SingleUseDialog.js index 2de6f83ff..b38b3f969 100644 --- a/js/SingleUseDialog.js +++ b/js/SingleUseDialog.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global dijit, define */ +/* global define */ define(["dojo/_base/declare", "dijit/Dialog"], function (declare) { return declare("fox.SingleUseDialog", dijit.Dialog, { create: function(params) { diff --git a/js/Toolbar.js b/js/Toolbar.js index d4993e713..b7c2a0898 100755 --- a/js/Toolbar.js +++ b/js/Toolbar.js @@ -1,4 +1,4 @@ -/* global dijit, define */ +/* global define */ define(["dojo/_base/declare", "dijit/Toolbar"], function (declare) { return declare("fox.Toolbar", dijit.Toolbar, { diff --git a/js/common.js b/js/common.js index cdc6cd6cc..bccd0dcbb 100755 --- a/js/common.js +++ b/js/common.js @@ -1,6 +1,6 @@ 'use strict'; -/* global dijit, App, dojo, __csrf_token */ +/* global App, __csrf_token */ /* eslint-disable no-new */ /* exported __ */ diff --git a/js/form/ComboButton.js b/js/form/ComboButton.js index 2ad4bf123..4c97809e4 100755 --- a/js/form/ComboButton.js +++ b/js/form/ComboButton.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global dijit, define */ +/* global define */ define(["dojo/_base/declare", "dijit/form/ComboButton"], function (declare) { return declare("fox.form.ComboButton", dijit.form.ComboButton, { startup: function() { diff --git a/js/form/DropDownButton.js b/js/form/DropDownButton.js index d5ea39726..357d5de91 100755 --- a/js/form/DropDownButton.js +++ b/js/form/DropDownButton.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global dijit, define */ +/* global define */ define(["dojo/_base/declare", "dijit/form/DropDownButton"], function (declare) { return declare("fox.form.DropDownButton", dijit.form.DropDownButton, { startup: function() { diff --git a/js/tt-rss.js b/js/tt-rss.js index 8e0401d80..2af9d32ff 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -1,6 +1,6 @@ 'use strict' -/* global require, App, dojo */ +/* global require, App */ /* exported Plugins */ const Plugins = {}; diff --git a/plugins/af_psql_trgm/init.js b/plugins/af_psql_trgm/init.js index f3662a389..e57f11564 100644 --- a/plugins/af_psql_trgm/init.js +++ b/plugins/af_psql_trgm/init.js @@ -1,4 +1,4 @@ -/* global dijit, dojo, Plugins, xhr, __ */ +/* global Plugins, xhr, __ */ Plugins.Psql_Trgm = { showRelated: function (id) { diff --git a/plugins/share/share.js b/plugins/share/share.js index 1be9db682..f27e06678 100644 --- a/plugins/share/share.js +++ b/plugins/share/share.js @@ -1,4 +1,4 @@ -/* global dojo, Plugins, App, Notify, fox, xhr, __ */ +/* global Plugins, App, Notify, fox, xhr, __ */ Plugins.Share = { shareArticle: function(id) { diff --git a/plugins/shorten_expanded/init.js b/plugins/shorten_expanded/init.js index bc3e35ff6..a89fe8e92 100644 --- a/plugins/shorten_expanded/init.js +++ b/plugins/shorten_expanded/init.js @@ -1,4 +1,4 @@ -/* global Plugins, __, require, PluginHost, App, dojo */ +/* global Plugins, __, require, PluginHost, App */ Plugins.Shorten_Expanded = { threshold: 1.5, // of window height -- cgit v1.2.3-54-g00ecf From cde120b3d730dfb56fa59759bb9a7369584f551c Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sun, 12 Oct 2025 22:26:51 +0000 Subject: Clean up unnecessary eslint-disable directives (per ESLint). --- js/App.js | 1 - js/Article.js | 1 - js/CommonDialogs.js | 3 --- js/CommonFilters.js | 2 -- js/FeedTree.js | 2 -- js/Headlines.js | 2 -- js/PrefFeedTree.js | 2 -- js/PrefFilterTree.js | 2 -- js/PrefHelpers.js | 1 - js/PrefLabelTree.js | 2 -- js/SingleUseDialog.js | 1 - js/common.js | 1 - js/form/ComboButton.js | 1 - js/form/DropDownButton.js | 1 - js/form/Select.js | 1 - js/form/ValidationTextArea.js | 2 -- 16 files changed, 25 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index 80fbabe82..0adf291c2 100644 --- a/js/App.js +++ b/js/App.js @@ -1,6 +1,5 @@ 'use strict'; -/* eslint-disable new-cap */ /* global __, Article, Headlines, Filters, fox */ /* global xhr, PluginHost, Notify, Feeds, Cookie */ /* global CommonDialogs, Plugins */ diff --git a/js/Article.js b/js/Article.js index 1f4cf931e..f7672033c 100644 --- a/js/Article.js +++ b/js/Article.js @@ -1,6 +1,5 @@ 'use strict' -/* eslint-disable no-new */ /* global __, ngettext, App, Headlines, xhr, PluginHost, Notify, fox */ const Article = { diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js index 43c22b5f6..16c1f5f46 100644 --- a/js/CommonDialogs.js +++ b/js/CommonDialogs.js @@ -1,8 +1,5 @@ 'use strict' -/* eslint-disable new-cap */ -/* eslint-disable no-new */ - /* global __, Notify, App, Feeds, xhr, Tables, fox */ /* exported CommonDialogs */ diff --git a/js/CommonFilters.js b/js/CommonFilters.js index 3e68168fe..54df70266 100644 --- a/js/CommonFilters.js +++ b/js/CommonFilters.js @@ -1,7 +1,5 @@ 'use strict' -/* eslint-disable no-new */ - /* global __, App, Article, Lists, fox */ /* global xhr, Notify, Feeds */ diff --git a/js/FeedTree.js b/js/FeedTree.js index 86a396068..f0041640d 100755 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global __, define, App, Feeds, CommonDialogs */ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/cookie", "dijit/Tree", "dijit/Menu"], function (declare, domConstruct, array, cookie) { @@ -208,7 +207,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co return [item.updated, item.error].filter((x) => x && x !== "").join(" - "); }, getIconClass: function (item, opened) { - // eslint-disable-next-line no-nested-ternary return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feed-icon"; }, getLabelClass: function (item/* , opened */) { diff --git a/js/Headlines.js b/js/Headlines.js index 1a59ffda0..1725998bc 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -228,7 +228,6 @@ const Headlines = { } else if (event.ctrlKey) { Headlines.select('invert', id); } else { - // eslint-disable-next-line no-lonely-if if (App.isCombinedMode()) { if (event.altKey && !in_body) { @@ -268,7 +267,6 @@ const Headlines = { return in_body; } else { - // eslint-disable-next-line no-lonely-if if (event.altKey) { Article.openInNewWindow(id); Headlines.toggleUnread(id, 0); diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js index 92e748903..142060488 100644 --- a/js/PrefFeedTree.js +++ b/js/PrefFeedTree.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global __, lib, define, CommonDialogs, Notify, Tables, xhr, fox, App */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_base/array", "dojo/cookie"], @@ -143,7 +142,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b return rc; }, getIconClass: function (item, opened) { - // eslint-disable-next-line no-nested-ternary return (!item || this.model.store.getValue(item, 'type') === 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feed-icon"; }, reload: function() { diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js index 64984b107..1f20da581 100644 --- a/js/PrefFilterTree.js +++ b/js/PrefFilterTree.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global __, define, lib, xhr, App, Notify, Filters */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], function (declare, domConstruct) { @@ -71,7 +70,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio return label; }, getIconClass: function (item, opened) { - // eslint-disable-next-line no-nested-ternary return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; }, getRowClass: function (item, opened) { diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index 38fa7e243..fbe1d37f5 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -1,6 +1,5 @@ 'use strict'; -/* eslint-disable no-new */ /* global __, Tables, Notify, xhr, App, fox */ const Helpers = { diff --git a/js/PrefLabelTree.js b/js/PrefLabelTree.js index 1859906ee..a4540deec 100644 --- a/js/PrefLabelTree.js +++ b/js/PrefLabelTree.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global __, define, lib, xhr, Notify, fox, App */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/form/DropDownButton"], function (declare, domConstruct) { @@ -40,7 +39,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/f return tnode; }, getIconClass: function (item, opened) { - // eslint-disable-next-line no-nested-ternary return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; }, getSelectedLabels: function() { diff --git a/js/SingleUseDialog.js b/js/SingleUseDialog.js index b38b3f969..a207c0c44 100644 --- a/js/SingleUseDialog.js +++ b/js/SingleUseDialog.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global define */ define(["dojo/_base/declare", "dijit/Dialog"], function (declare) { return declare("fox.SingleUseDialog", dijit.Dialog, { diff --git a/js/common.js b/js/common.js index bccd0dcbb..3e8a66e5b 100755 --- a/js/common.js +++ b/js/common.js @@ -1,7 +1,6 @@ 'use strict'; /* global App, __csrf_token */ -/* eslint-disable no-new */ /* exported __ */ function __(msg) { diff --git a/js/form/ComboButton.js b/js/form/ComboButton.js index 4c97809e4..98386eead 100755 --- a/js/form/ComboButton.js +++ b/js/form/ComboButton.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global define */ define(["dojo/_base/declare", "dijit/form/ComboButton"], function (declare) { return declare("fox.form.ComboButton", dijit.form.ComboButton, { diff --git a/js/form/DropDownButton.js b/js/form/DropDownButton.js index 357d5de91..60d8e86ef 100755 --- a/js/form/DropDownButton.js +++ b/js/form/DropDownButton.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global define */ define(["dojo/_base/declare", "dijit/form/DropDownButton"], function (declare) { return declare("fox.form.DropDownButton", dijit.form.DropDownButton, { diff --git a/js/form/Select.js b/js/form/Select.js index 2259fd762..bc352e612 100755 --- a/js/form/Select.js +++ b/js/form/Select.js @@ -1,4 +1,3 @@ -/* eslint-disable prefer-rest-params */ /* global define */ // FIXME: there probably is a better, more dojo-like notation for custom data- properties define(["dojo/_base/declare", diff --git a/js/form/ValidationTextArea.js b/js/form/ValidationTextArea.js index c53260f40..ced4f8fe7 100644 --- a/js/form/ValidationTextArea.js +++ b/js/form/ValidationTextArea.js @@ -1,5 +1,4 @@ // https://stackoverflow.com/questions/19317258/how-to-use-dijit-textarea-validation-dojo-1-9 -/* eslint-disable no-new */ /* global define */ define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/SimpleTextarea", "dijit/form/ValidationTextBox"], @@ -10,7 +9,6 @@ define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/SimpleTextarea", "d this.constraints = {}; this.baseClass += ' dijitValidationTextArea'; }, - // eslint-disable-next-line no-template-curly-in-string templateString: "", validator: function(value, constraints) { //console.log(this, value, constraints); -- cgit v1.2.3-54-g00ecf From 7d6d32144177ce8c516092a114435988864ff6fa Mon Sep 17 00:00:00 2001 From: supahgreg Date: Mon, 13 Oct 2025 02:54:36 +0000 Subject: Address remaining ESLint 'no-undef' and 'no-unused-vars' occurrences. * https://eslint.org/docs/latest/rules/no-undef * https://eslint.org/docs/latest/rules/no-unused-vars --- js/App.js | 5 +++-- js/Article.js | 4 ++-- js/FeedTree.js | 6 +++--- js/Feeds.js | 8 ++++---- js/Headlines.js | 6 +++--- js/PrefFeedTree.js | 3 +-- js/PrefFilterTree.js | 2 +- js/form/Select.js | 2 +- js/form/ValidationMultiSelect.js | 4 ++-- js/form/ValidationTextArea.js | 4 ++-- js/utility.js | 3 ++- plugins/hotkeys_force_top/init.js | 2 ++ plugins/share/share_prefs.js | 2 +- plugins/toggle_sidebar/init.js | 2 ++ 14 files changed, 29 insertions(+), 24 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index 0adf291c2..571e3373f 100644 --- a/js/App.js +++ b/js/App.js @@ -196,7 +196,7 @@ const App = { mql.addEventListener("change", () => { this.nightModeChanged(mql.matches, App.byId("theme_auto_css")); }); - } catch (e) { + } catch { console.warn("exception while trying to set MQL event listener"); } @@ -276,7 +276,7 @@ const App = { try { const results = new RegExp('[?&]' + name + '=([^&#]*)').exec(window.location.href); return decodeURIComponent(results[1].replace(/\+/g, " ")) || 0; - } catch (e) { + } catch { return 0; } }, @@ -701,6 +701,7 @@ const App = { this.is_prefs = is_prefs; window.onerror = this.Error.onWindowError; + /* global __default_dark_theme, __default_light_theme */ this.setInitParam("csrf_token", __csrf_token); this.setInitParam("default_light_theme", __default_light_theme); this.setInitParam("default_dark_theme", __default_dark_theme); diff --git a/js/Article.js b/js/Article.js index f7672033c..88c1cb0e0 100644 --- a/js/Article.js +++ b/js/Article.js @@ -220,7 +220,7 @@ const Article = { try { c.domNode.scrollTop = 0; - } catch (e) { + } catch { } c.attr('content', article); @@ -230,7 +230,7 @@ const Article = { try { c.focus(); - } catch (e) { + } catch { } }, formatComments: function(hl) { diff --git a/js/FeedTree.js b/js/FeedTree.js index f0041640d..970efe335 100755 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -209,10 +209,10 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co getIconClass: function (item, opened) { return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feed-icon"; }, - getLabelClass: function (item/* , opened */) { + getLabelClass: function (item /*, opened */) { return (item.unread <= 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread"; }, - getRowClass: function (item/*, opened */) { + getRowClass: function (item /*, opened */) { let rc = "dijitTreeRow dijitTreeRowFlex"; const is_cat = String(item.id).indexOf('CAT:') !== -1; @@ -490,7 +490,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co _itemsByIdentity["FEED:" + feed])[0]. getParent().item.bare_id[0]; - } catch (e) { + } catch { return false; } }, diff --git a/js/Feeds.js b/js/Feeds.js index bfe901737..f99d86943 100644 --- a/js/Feeds.js +++ b/js/Feeds.js @@ -544,7 +544,7 @@ const Feeds = { if (tree && tree.model) return tree.model.getFeedUnread(feed, is_cat); - } catch (e) { + } catch { // } @@ -557,7 +557,7 @@ const Feeds = { if (tree && tree.model) return tree.getFeedCategory(feed); - } catch (e) { + } catch { // } @@ -584,7 +584,7 @@ const Feeds = { if (tree && tree.model) return tree.model.setFeedValue(feed, is_cat, key, value); - } catch (e) { + } catch { // } }, @@ -595,7 +595,7 @@ const Feeds = { if (tree && tree.model) return tree.model.getFeedValue(feed, is_cat, key); - } catch (e) { + } catch { // } return ''; diff --git a/js/Headlines.js b/js/Headlines.js index 1725998bc..c27b214dc 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -16,7 +16,7 @@ const Headlines = { default_move_on_expand: true, line_scroll_offset: 120, /* px */ sticky_header_observer: new IntersectionObserver( - (entries, observer) => { + (entries) => { entries.forEach((entry) => { const header = entry.target.closest('.cdm').querySelector(".header"); @@ -32,7 +32,7 @@ const Headlines = { {threshold: [0, 1], root: document.querySelector("#headlines-frame")} ), sticky_content_observer: new IntersectionObserver( - (entries, observer) => { + (entries) => { entries.forEach((entry) => { const header = entry.target.closest('.cdm').querySelector(".header"); @@ -44,7 +44,7 @@ const Headlines = { {threshold: [0, 1], root: document.querySelector("#headlines-frame")} ), unpack_observer: new IntersectionObserver( - (entries, observer) => { + (entries) => { entries.forEach((entry) => { if (entry.intersectionRatio > 0) Article.unpack(entry.target); diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js index 142060488..4e9cb58a5 100644 --- a/js/PrefFeedTree.js +++ b/js/PrefFeedTree.js @@ -132,8 +132,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b this.inherited(arguments); this.tree.model.store.save(); }, - // eslint-disable-next-line no-unused-vars - getRowClass: function (item, opened) { + getRowClass: function (item /*, opened */) { let rc = (!item.error || item.error === '') ? "dijitTreeRow" : "dijitTreeRow Error"; diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js index 1f20da581..4b077259a 100644 --- a/js/PrefFilterTree.js +++ b/js/PrefFilterTree.js @@ -72,7 +72,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio getIconClass: function (item, opened) { return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible"; }, - getRowClass: function (item, opened) { + getRowClass: function (item /*, opened */) { const enabled = this.model.store.getValue(item, 'enabled'); return enabled ? "dijitTreeRow" : "dijitTreeRow filterDisabled"; diff --git a/js/form/Select.js b/js/form/Select.js index bc352e612..c44674e2a 100755 --- a/js/form/Select.js +++ b/js/form/Select.js @@ -24,7 +24,7 @@ define(["dojo/_base/declare", onItemClick: function(/*item, menu*/) { // }, - _setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ + _setValueAttr: function(/*anything*/ newValue, /*Boolean? priorityChange */){ if (this.attr('data-prevent-value-change') === 'true' && newValue !== '') return; diff --git a/js/form/ValidationMultiSelect.js b/js/form/ValidationMultiSelect.js index a0199c9c6..5a7918271 100644 --- a/js/form/ValidationMultiSelect.js +++ b/js/form/ValidationMultiSelect.js @@ -6,11 +6,11 @@ define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/MultiSelect", ], function(declare, lang, MultiSelect) { return declare('fox.form.ValidationMultiSelect', [MultiSelect], { - constructor: function(params){ + constructor: function(/* params */) { this.constraints = {}; this.baseClass += ' dijitValidationMultiSelect'; }, - validate: function(/*Boolean*/ isFocused){ + validate: function(/*Boolean isFocused */) { if (this.required && this.attr('value').length === 0) return false; diff --git a/js/form/ValidationTextArea.js b/js/form/ValidationTextArea.js index ced4f8fe7..a71a490c1 100644 --- a/js/form/ValidationTextArea.js +++ b/js/form/ValidationTextArea.js @@ -5,7 +5,7 @@ define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/SimpleTextarea", "d function(declare, lang, SimpleTextarea, ValidationTextBox) { return declare('fox.form.ValidationTextArea', [SimpleTextarea, ValidationTextBox], { - constructor: function(params){ + constructor: function(/* params */) { this.constraints = {}; this.baseClass += ' dijitValidationTextArea'; }, @@ -19,7 +19,7 @@ define(["dojo/_base/declare", "dojo/_base/lang", "dijit/form/SimpleTextarea", "d if (this.validregexp) { try { new RegExp("/" + value + "/"); - } catch (e) { + } catch { return false; } } diff --git a/js/utility.js b/js/utility.js index e5de5f300..0a9b59454 100644 --- a/js/utility.js +++ b/js/utility.js @@ -7,6 +7,7 @@ window.addEventListener("load", function() { apply_night_mode: function (is_night, link) { console.log("night mode changed to", is_night); + /* global __default_dark_theme, __default_light_theme */ const light_theme = typeof __default_light_theme !== 'undefined' ? __default_light_theme : 'themes/light.css'; const dark_theme = typeof __default_dark_theme !== 'undefined' ? __default_dark_theme : 'themes/night.css'; @@ -35,7 +36,7 @@ window.addEventListener("load", function() { mql.addEventListener("change", () => { UtilityJS.apply_night_mode(mql.matches, link); }); - } catch (e) { + } catch { console.warn("exception while trying to set MQL event listener"); } diff --git a/plugins/hotkeys_force_top/init.js b/plugins/hotkeys_force_top/init.js index 8d6280fc9..242d14ecf 100644 --- a/plugins/hotkeys_force_top/init.js +++ b/plugins/hotkeys_force_top/init.js @@ -1,3 +1,5 @@ +/* global Headlines, require */ + require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) { ready(function () { Headlines.default_force_to_top = true; diff --git a/plugins/share/share_prefs.js b/plugins/share/share_prefs.js index d974af618..e2151065f 100644 --- a/plugins/share/share_prefs.js +++ b/plugins/share/share_prefs.js @@ -1,4 +1,4 @@ -/* global Plugins, Notify, xhr, App */ +/* global __, Plugins, Notify, xhr, App */ Plugins.Share = { clearKeys: function() { diff --git a/plugins/toggle_sidebar/init.js b/plugins/toggle_sidebar/init.js index 9efb06193..6ac74d3c3 100644 --- a/plugins/toggle_sidebar/init.js +++ b/plugins/toggle_sidebar/init.js @@ -1,3 +1,5 @@ +/* global Plugins, Feeds */ + Plugins.Toggle_Sidebar = { toggle: function() { Feeds.toggle(); -- cgit v1.2.3-54-g00ecf From 8b46ab31a96b6b6129f624719ac33ddf761805f1 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Tue, 14 Oct 2025 04:36:36 +0000 Subject: Fix some more issues related to ESLint 'eqeqeq' changes (again). --- js/App.js | 2 +- js/PrefHelpers.js | 2 +- js/common.js | 21 +++++++++++---------- 3 files changed, 13 insertions(+), 12 deletions(-) (limited to 'js/App.js') diff --git a/js/App.js b/js/App.js index 571e3373f..e305ce998 100644 --- a/js/App.js +++ b/js/App.js @@ -912,7 +912,7 @@ const App = { if (action_name) { const action_func = this.hotkey_actions[action_name]; - if (action_func !== null) { + if (typeof action_func === 'function') { action_func(event); event.stopPropagation(); return false; diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js index fbe1d37f5..cf3f03bf2 100644 --- a/js/PrefHelpers.js +++ b/js/PrefHelpers.js @@ -455,7 +455,7 @@ const Helpers = { Notify.progress("Loading, please wait..."); xhr.json("backend.php", {op: "Pref_Prefs", method: "uninstallPlugin", plugin: plugin}, (reply) => { - if (reply && reply.status === 1) + if (reply?.status === true) Helpers.Plugins.reload(); else { Notify.error("Plugin uninstallation failed."); diff --git a/js/common.js b/js/common.js index 60b2f4c9c..48a42b95a 100755 --- a/js/common.js +++ b/js/common.js @@ -217,21 +217,22 @@ const xhr = { console.log('xhr.json', '<<<', obj, (new Date().getTime() - xhr._ts) + " ms"); - if (obj && typeof App !== "undefined") - if (!App.handleRpcJson(obj)) { + if (obj && typeof App !== 'undefined') { + if (!App.handleRpcJson(obj)) { - if (typeof failed === 'function') - failed(obj); + if (typeof failed === 'function') + failed(obj); - reject(obj); - return; + reject(obj); + return; + } } - if (typeof complete === 'function') - complete(obj); + if (typeof complete === 'function') + complete(obj); - resolve(obj); - })); + resolve(obj); + })); } }; -- cgit v1.2.3-54-g00ecf