diff options
Diffstat (limited to 'apps/comments/src/actions/inlineUnreadCommentsAction.ts')
-rw-r--r-- | apps/comments/src/actions/inlineUnreadCommentsAction.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/apps/comments/src/actions/inlineUnreadCommentsAction.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.ts new file mode 100644 index 00000000000..0afd93d7606 --- /dev/null +++ b/apps/comments/src/actions/inlineUnreadCommentsAction.ts @@ -0,0 +1,46 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { FileAction, Node } from '@nextcloud/files' +import { translate as t, translatePlural as n } from '@nextcloud/l10n' +import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw' + +import logger from '../logger' + +export const action = new FileAction({ + id: 'comments-unread', + + title(nodes: Node[]) { + const unread = nodes[0].attributes['comments-unread'] as number + if (unread >= 0) { + return n('comments', '1 new comment', '{unread} new comments', unread, { unread }) + } + return t('comments', 'Comment') + }, + + // Empty string when rendered inline + displayName: () => '', + + iconSvgInline: () => CommentProcessingSvg, + + enabled(nodes: Node[]) { + const unread = nodes[0].attributes['comments-unread'] as number|undefined + return typeof unread === 'number' && unread > 0 + }, + + async exec(node: Node) { + try { + window.OCA.Files.Sidebar.setActiveTab('comments') + await window.OCA.Files.Sidebar.open(node.path) + return null + } catch (error) { + logger.error('Error while opening sidebar', { error }) + return false + } + }, + + inline: () => true, + + order: -140, +}) |