aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders
diff options
context:
space:
mode:
authorEduardo Morales <emoral435@gmail.com>2023-11-22 17:10:25 -0600
committerEduardo Morales <emoral435@gmail.com>2023-12-08 21:20:00 -0600
commitc4f6803549b7b2f7c5844a43b8695203836b0b66 (patch)
tree026690693775f61209015cea0ae21385b5265347 /apps/files_reminders
parent9964bcbfd576e3c0627f9c6bc662b3168d12a80b (diff)
downloadnextcloud-server-c4f6803549b7b2f7c5844a43b8695203836b0b66.tar.gz
nextcloud-server-c4f6803549b7b2f7c5844a43b8695203836b0b66.zip
fix(papercut): rerendered submenu actions for time sensitive actions
Signed-off-by: Eduardo Morales <emoral435@gmail.com>
Diffstat (limited to 'apps/files_reminders')
-rw-r--r--apps/files_reminders/src/actions/setReminderSuggestionActions.ts48
1 files changed, 37 insertions, 11 deletions
diff --git a/apps/files_reminders/src/actions/setReminderSuggestionActions.ts b/apps/files_reminders/src/actions/setReminderSuggestionActions.ts
index 069a840ff71..eda95205182 100644
--- a/apps/files_reminders/src/actions/setReminderSuggestionActions.ts
+++ b/apps/files_reminders/src/actions/setReminderSuggestionActions.ts
@@ -36,6 +36,7 @@ interface ReminderOption {
label: string
ariaLabel: string
dateString?: string
+ verboseDateString?: string
action?: () => Promise<void>
}
@@ -43,24 +44,32 @@ const laterToday: ReminderOption = {
dateTimePreset: DateTimePreset.LaterToday,
label: t('files_reminders', 'Later today'),
ariaLabel: t('files_reminders', 'Set reminder for later today'),
+ dateString: '',
+ verboseDateString: ''
}
const tomorrow: ReminderOption = {
dateTimePreset: DateTimePreset.Tomorrow,
label: t('files_reminders', 'Tomorrow'),
ariaLabel: t('files_reminders', 'Set reminder for tomorrow'),
+ dateString: '',
+ verboseDateString: ''
}
const thisWeekend: ReminderOption = {
dateTimePreset: DateTimePreset.ThisWeekend,
label: t('files_reminders', 'This weekend'),
ariaLabel: t('files_reminders', 'Set reminder for this weekend'),
+ dateString: '',
+ verboseDateString: ''
}
const nextWeek: ReminderOption = {
dateTimePreset: DateTimePreset.NextWeek,
label: t('files_reminders', 'Next week'),
ariaLabel: t('files_reminders', 'Set reminder for next week'),
+ dateString: '',
+ verboseDateString: ''
}
/**
@@ -69,21 +78,17 @@ const nextWeek: ReminderOption = {
* @param option The option to generate the action for
* @return The file action or null if the option should not be shown
*/
-const generateFileAction = (option): FileAction|null => {
- const dateTime = getDateTime(option.dateTimePreset)
- if (!dateTime) {
- return null
- }
+const generateFileAction = (option: ReminderOption): FileAction|null => {
return new FileAction({
id: `set-reminder-${option.dateTimePreset}`,
- displayName: () => `${option.label} – ${getDateString(dateTime)}`,
- title: () => `${option.ariaLabel} – ${getVerboseDateString(dateTime)}`,
+ displayName: () => `${option.label} – ${option.dateString}`,
+ title: () => `${option.ariaLabel} – ${option.verboseDateString}`,
// Empty svg to hide the icon
iconSvgInline: () => '<svg></svg>',
- enabled: () => true,
+ enabled: () => Boolean(getDateTime(option.dateTimePreset)),
parent: SET_REMINDER_MENU_ID,
async exec(node: Node) {
@@ -96,7 +101,7 @@ const generateFileAction = (option): FileAction|null => {
// Set the reminder
try {
- await setReminder(node.fileid, dateTime)
+ await setReminder(node.fileid, getDateTime(option.dateTimePreset)!)
showSuccess(t('files_reminders', 'Reminder set for "{fileName}"', { fileName: node.basename }))
} catch (error) {
logger.error('Failed to set reminder', { error })
@@ -110,7 +115,28 @@ const generateFileAction = (option): FileAction|null => {
})
}
+[laterToday, tomorrow, thisWeekend, nextWeek].forEach((option) => {
+ // Generate the initial date string
+ const dateTime = getDateTime(option.dateTimePreset)
+ if (!dateTime) {
+ return
+ }
+ option.dateString = getDateString(dateTime)
+ option.verboseDateString = getVerboseDateString(dateTime)
+ +
+ // Update the date string every 30 minutes
+ setInterval(() => {
+ const dateTime = getDateTime(option.dateTimePreset)
+ if (!dateTime) {
+ return
+ }
+
+ // update the submenu remind options strings
+ option.dateString = getDateString(dateTime)
+ option.verboseDateString = getVerboseDateString(dateTime)
+ }, 1000 * 30 * 60)
+})
+
// Generate the default preset actions
export const actions = [laterToday, tomorrow, thisWeekend, nextWeek]
- .map(generateFileAction)
- .filter(Boolean) as FileAction[]
+ .map(generateFileAction) as FileAction[]