Skip to content

Commit d2a49da

Browse files
committed
feat(reader): add mark-read and mark-unread shortcuts
1 parent 9a27d50 commit d2a49da

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

src/i18n/en-US.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@
4949
"k": "Previous item",
5050
"o": "Open item",
5151
"u": "Close item",
52-
"v": "Open item in browser"
52+
"v": "Open item in browser",
53+
"shifti": "Mark as read",
54+
"shiftu": "Mark as unread"
5355
}
5456
}
5557
},

src/i18n/zh-CN.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@
4949
"k": "上一条",
5050
"o": "打开条目",
5151
"u": "关闭条目",
52-
"v": "浏览器中打开"
52+
"v": "浏览器中打开",
53+
"shifti": "标记为已读",
54+
"shiftu": "标记为未读"
5355
}
5456
}
5557
},

src/ui/apps/reader/keyboard-shortcuts-panel.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ function KeyboardShortcutsPanel() {
7777
keys: ['v'],
7878
text: intl.get('reader.keyboard.keys.v'),
7979
},
80+
{
81+
keys: ['shift', 'i'],
82+
connector: '+',
83+
text: intl.get('reader.keyboard.keys.shifti'),
84+
},
85+
{
86+
keys: ['shift', 'u'],
87+
text: intl.get('reader.keyboard.keys.shiftu'),
88+
connector: '+',
89+
},
8090
].map((item) => {
8191
const keys = item.keys.map((k, index, v) => (
8292
<span
@@ -87,15 +97,22 @@ function KeyboardShortcutsPanel() {
8797
>
8898
{k}
8999
</span>
90-
{index !== v.length - 1 ? <span> then </span> : null}
100+
{index !== v.length - 1 ? (
101+
<span>
102+
{' '}
103+
{item.connector ?? 'then'}
104+
{' '}
105+
</span>
106+
) : null}
91107
</span>
92108
))
109+
93110
return (
94111
<div
95112
key={item.keys.join('')}
96113
>
97114
<span
98-
className="inline-block w-14 text-right"
115+
className="inline-block w-16 text-right"
99116
>
100117
{keys}
101118
</span>

src/ui/apps/reader/use-keyboard.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ iregister(['v'], () => {
3939
iregister(['x'], () => readerStore.toggleSelected())
4040
iregister(['*', 'a'], () => readerStore.selectAll())
4141
iregister(['*', 'n'], () => readerStore.deselectAll())
42+
iregister(['shift', 'i'], () => readerStore.markRead())
43+
iregister(['shift', 'u'], () => readerStore.markUnread())
4244

4345
iregister(['g', 's'], () => readerStore.changeTab('starred'))
4446
iregister(['g', 'a'], () => readerStore.changeTab('all'))

src/ui/store/reader.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,16 @@ export class ReaderStore {
252252
articleService.markRead(articles.map((v) => v.id!), status)
253253
}
254254

255-
markRead(id: number | number []) {
255+
private getSelectedIds() {
256+
const articles = this.opened ? [this.activeArticle] : this.articles.filter((v) => v.selected)
257+
return articles.map((v) => v.id!)
258+
}
259+
260+
markRead(id: number | number [] = this.getSelectedIds()) {
256261
this.markReadStatus(id, 1)
257262
}
258263

259-
markUnread(id: number | number []) {
264+
markUnread(id: number | number [] = this.getSelectedIds()) {
260265
this.markReadStatus(id, 0)
261266
}
262267

0 commit comments

Comments
 (0)