diff --git a/src/i18n/en-US.json b/src/i18n/en-US.json index 5dfd59d..57eed51 100644 --- a/src/i18n/en-US.json +++ b/src/i18n/en-US.json @@ -49,7 +49,9 @@ "k": "Previous item", "o": "Open item", "u": "Close item", - "v": "Open item in browser" + "v": "Open item in browser", + "shifti": "Mark as read", + "shiftu": "Mark as unread" } } }, diff --git a/src/i18n/zh-CN.json b/src/i18n/zh-CN.json index 41966df..2c43ae5 100644 --- a/src/i18n/zh-CN.json +++ b/src/i18n/zh-CN.json @@ -49,7 +49,9 @@ "k": "上一条", "o": "打开条目", "u": "关闭条目", - "v": "浏览器中打开" + "v": "浏览器中打开", + "shifti": "标记为已读", + "shiftu": "标记为未读" } } }, diff --git a/src/ui/apps/reader/keyboard-shortcuts-panel.tsx b/src/ui/apps/reader/keyboard-shortcuts-panel.tsx index 9a6d3d7..0993cb1 100644 --- a/src/ui/apps/reader/keyboard-shortcuts-panel.tsx +++ b/src/ui/apps/reader/keyboard-shortcuts-panel.tsx @@ -77,6 +77,16 @@ function KeyboardShortcutsPanel() { keys: ['v'], text: intl.get('reader.keyboard.keys.v'), }, + { + keys: ['shift', 'i'], + connector: '+', + text: intl.get('reader.keyboard.keys.shifti'), + }, + { + keys: ['shift', 'u'], + text: intl.get('reader.keyboard.keys.shiftu'), + connector: '+', + }, ].map((item) => { const keys = item.keys.map((k, index, v) => ( {k} - {index !== v.length - 1 ? then : null} + {index !== v.length - 1 ? ( + + {' '} + {item.connector ?? 'then'} + {' '} + + ) : null} )) + return (
{keys} diff --git a/src/ui/apps/reader/use-keyboard.ts b/src/ui/apps/reader/use-keyboard.ts index e9cfcc7..c2bbfb1 100644 --- a/src/ui/apps/reader/use-keyboard.ts +++ b/src/ui/apps/reader/use-keyboard.ts @@ -39,6 +39,8 @@ iregister(['v'], () => { iregister(['x'], () => readerStore.toggleSelected()) iregister(['*', 'a'], () => readerStore.selectAll()) iregister(['*', 'n'], () => readerStore.deselectAll()) +iregister(['shift', 'i'], () => readerStore.markRead()) +iregister(['shift', 'u'], () => readerStore.markUnread()) iregister(['g', 's'], () => readerStore.changeTab('starred')) iregister(['g', 'a'], () => readerStore.changeTab('all')) diff --git a/src/ui/store/reader.ts b/src/ui/store/reader.ts index d396f12..4773b2d 100644 --- a/src/ui/store/reader.ts +++ b/src/ui/store/reader.ts @@ -252,11 +252,16 @@ export class ReaderStore { articleService.markRead(articles.map((v) => v.id!), status) } - markRead(id: number | number []) { + private getSelectedIds() { + const articles = this.opened ? [this.activeArticle] : this.articles.filter((v) => v.selected) + return articles.map((v) => v.id!) + } + + markRead(id: number | number [] = this.getSelectedIds()) { this.markReadStatus(id, 1) } - markUnread(id: number | number []) { + markUnread(id: number | number [] = this.getSelectedIds()) { this.markReadStatus(id, 0) }