mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-13 03:35:55 +00:00
add hotkeys J/K to move between unread feeds
This commit is contained in:
14
js/App.js
14
js/App.js
@@ -944,6 +944,13 @@ const App = {
|
||||
if (feed !== false)
|
||||
Feeds.open({feed: feed, is_cat: is_cat, delayed: true})
|
||||
};
|
||||
this.hotkey_actions["next_unread_feed"] = () => {
|
||||
const [feed, is_cat] = Feeds.getNextFeed(
|
||||
Feeds.getActive(), Feeds.activeIsCat(), true);
|
||||
|
||||
if (feed !== false)
|
||||
Feeds.open({feed: feed, is_cat: is_cat, delayed: true})
|
||||
};
|
||||
this.hotkey_actions["prev_feed"] = () => {
|
||||
const [feed, is_cat] = Feeds.getPreviousFeed(
|
||||
Feeds.getActive(), Feeds.activeIsCat());
|
||||
@@ -951,6 +958,13 @@ const App = {
|
||||
if (feed !== false)
|
||||
Feeds.open({feed: feed, is_cat: is_cat, delayed: true})
|
||||
};
|
||||
this.hotkey_actions["prev_unread_feed"] = () => {
|
||||
const [feed, is_cat] = Feeds.getPreviousFeed(
|
||||
Feeds.getActive(), Feeds.activeIsCat(), true);
|
||||
|
||||
if (feed !== false)
|
||||
Feeds.open({feed: feed, is_cat: is_cat, delayed: true})
|
||||
};
|
||||
this.hotkey_actions["next_article_or_scroll"] = (event) => {
|
||||
if (this.isCombinedMode())
|
||||
Headlines.scroll(Headlines.line_scroll_offset, event);
|
||||
|
||||
@@ -434,14 +434,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
|
||||
|
||||
return [false, false];
|
||||
},
|
||||
_prevTreeItemFromIndex: function (start) {
|
||||
_prevTreeItemFromIndex: function (start, unread_only) {
|
||||
const items = this.model.store._arrayOfAllItems;
|
||||
|
||||
for (let i = start-1; i > 0; i--) {
|
||||
const id = String(items[i].id);
|
||||
const box = this._itemNodesMap[id];
|
||||
const unread = parseInt(items[i].unread);
|
||||
|
||||
if (box) {
|
||||
if (box && (!unread_only || unread > 0)) {
|
||||
const row = box[0].rowNode;
|
||||
const cat = box[0].rowNode.parentNode.parentNode;
|
||||
|
||||
@@ -451,7 +452,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
|
||||
}
|
||||
}
|
||||
},
|
||||
getPreviousFeed: function (feed, is_cat) {
|
||||
getPreviousFeed: function (feed, is_cat, unread_only = false) {
|
||||
let treeItem;
|
||||
|
||||
if (is_cat) {
|
||||
@@ -464,11 +465,11 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
|
||||
const start = items.indexOf(treeItem);
|
||||
|
||||
if (start != -1) {
|
||||
let item = this._prevTreeItemFromIndex(start);
|
||||
let item = this._prevTreeItemFromIndex(start, unread_only);
|
||||
|
||||
// wrap from the bottom
|
||||
if (!item) {
|
||||
item = this._prevTreeItemFromIndex(items.length);
|
||||
item = this._prevTreeItemFromIndex(items.length, unread_only);
|
||||
}
|
||||
|
||||
if (item)
|
||||
|
||||
@@ -583,17 +583,17 @@ const Feeds = {
|
||||
|
||||
return false;
|
||||
},
|
||||
getNextFeed: function(feed, is_cat) {
|
||||
getNextFeed: function(feed, is_cat, unread_only = false) {
|
||||
const tree = dijit.byId("feedTree");
|
||||
|
||||
if (tree) return tree.getNextFeed(feed, is_cat, false);
|
||||
if (tree) return tree.getNextFeed(feed, is_cat, unread_only);
|
||||
|
||||
return [false, false];
|
||||
},
|
||||
getPreviousFeed: function(feed, is_cat) {
|
||||
getPreviousFeed: function(feed, is_cat, unread_only = false) {
|
||||
const tree = dijit.byId("feedTree");
|
||||
|
||||
if (tree) return tree.getPreviousFeed(feed, is_cat);
|
||||
if (tree) return tree.getPreviousFeed(feed, is_cat, unread_only);
|
||||
|
||||
return [false, false];
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user