aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders/src/actions/setReminderCustomAction.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_reminders/src/actions/setReminderCustomAction.ts')
-rw-r--r--apps/files_reminders/src/actions/setReminderCustomAction.ts43
1 files changed, 43 insertions, 0 deletions
diff --git a/apps/files_reminders/src/actions/setReminderCustomAction.ts b/apps/files_reminders/src/actions/setReminderCustomAction.ts
new file mode 100644
index 00000000000..ea21293ee52
--- /dev/null
+++ b/apps/files_reminders/src/actions/setReminderCustomAction.ts
@@ -0,0 +1,43 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import type { Node, View } from '@nextcloud/files'
+
+import { FileAction } from '@nextcloud/files'
+import { translate as t } from '@nextcloud/l10n'
+import CalendarClockSvg from '@mdi/svg/svg/calendar-clock.svg?raw'
+
+import { SET_REMINDER_MENU_ID } from './setReminderMenuAction'
+import { pickCustomDate } from '../services/customPicker'
+
+export const action = new FileAction({
+ id: 'set-reminder-custom',
+ displayName: () => t('files_reminders', 'Custom reminder'),
+ title: () => t('files_reminders', 'Reminder at custom date & time'),
+ iconSvgInline: () => CalendarClockSvg,
+
+ enabled: (nodes: Node[], view: View) => {
+ if (view.id === 'trashbin') {
+ return false
+ }
+ // 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 dueDate !== undefined
+ },
+
+ parent: SET_REMINDER_MENU_ID,
+
+ async exec(file: Node) {
+ pickCustomDate(file)
+ return null
+ },
+
+ // After presets
+ order: 22,
+})