aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders/src/actions/reminderStatusAction.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_reminders/src/actions/reminderStatusAction.ts')
-rw-r--r--apps/files_reminders/src/actions/reminderStatusAction.ts45
1 files changed, 45 insertions, 0 deletions
diff --git a/apps/files_reminders/src/actions/reminderStatusAction.ts b/apps/files_reminders/src/actions/reminderStatusAction.ts
new file mode 100644
index 00000000000..6a2c9943d3b
--- /dev/null
+++ b/apps/files_reminders/src/actions/reminderStatusAction.ts
@@ -0,0 +1,45 @@
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { FileAction, type Node } from '@nextcloud/files'
+import { translate as t } from '@nextcloud/l10n'
+
+import AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'
+
+import { pickCustomDate } from '../services/customPicker.ts'
+import { getVerboseDateString } from '../shared/utils.ts'
+
+export const action = new FileAction({
+ id: 'reminder-status',
+
+ inline: () => true,
+
+ displayName: () => '',
+
+ title: (nodes: Node[]) => {
+ const node = nodes.at(0)!
+ const dueDate = new Date(node.attributes['reminder-due-date'])
+ return `${t('files_reminders', 'Reminder set')} – ${getVerboseDateString(dueDate)}`
+ },
+
+ iconSvgInline: () => AlarmSvg,
+
+ enabled: (nodes: Node[]) => {
+ // Only allow on a single node
+ if (nodes.length !== 1) {
+ return false
+ }
+ const node = nodes.at(0)!
+ const dueDate = node.attributes['reminder-due-date']
+ return Boolean(dueDate)
+ },
+
+ async exec(node: Node) {
+ pickCustomDate(node)
+ return null
+ },
+
+ order: -15,
+})