aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_reminders/src/services
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_reminders/src/services')
-rw-r--r--apps/files_reminders/src/services/customPicker.ts29
-rw-r--r--apps/files_reminders/src/services/reminderService.ts38
2 files changed, 67 insertions, 0 deletions
diff --git a/apps/files_reminders/src/services/customPicker.ts b/apps/files_reminders/src/services/customPicker.ts
new file mode 100644
index 00000000000..5cefffe39a5
--- /dev/null
+++ b/apps/files_reminders/src/services/customPicker.ts
@@ -0,0 +1,29 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import type { Node } from '@nextcloud/files'
+import Vue from 'vue'
+
+import SetCustomReminderModal from '../components/SetCustomReminderModal.vue'
+
+const View = Vue.extend(SetCustomReminderModal)
+const mount = document.createElement('div')
+mount.id = 'set-custom-reminder-modal'
+document.body.appendChild(mount)
+
+// Create a new Vue instance and mount it to our modal container
+const CustomReminderModal = new View({
+ name: 'SetCustomReminderModal',
+ el: mount,
+})
+
+export const pickCustomDate = (node: Node): Promise<void> => {
+ CustomReminderModal.open(node)
+
+ // Wait for the modal to close
+ return new Promise((resolve) => {
+ CustomReminderModal.$once('close', resolve)
+ })
+}
diff --git a/apps/files_reminders/src/services/reminderService.ts b/apps/files_reminders/src/services/reminderService.ts
new file mode 100644
index 00000000000..9f58d1bdae3
--- /dev/null
+++ b/apps/files_reminders/src/services/reminderService.ts
@@ -0,0 +1,38 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import axios from '@nextcloud/axios'
+import { generateOcsUrl } from '@nextcloud/router'
+
+interface Reminder {
+ dueDate: null | Date
+}
+
+export const getReminder = async (fileId: number): Promise<Reminder> => {
+ const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })
+ const response = await axios.get(url)
+ const dueDate = response.data.ocs.data.dueDate ? new Date(response.data.ocs.data.dueDate) : null
+
+ return {
+ dueDate,
+ }
+}
+
+export const setReminder = async (fileId: number, dueDate: Date): Promise<[]> => {
+ const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })
+
+ const response = await axios.put(url, {
+ dueDate: dueDate.toISOString(), // timezone of string is always UTC
+ })
+
+ return response.data.ocs.data
+}
+
+export const clearReminder = async (fileId: number): Promise<[]> => {
+ const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })
+ const response = await axios.delete(url)
+
+ return response.data.ocs.data
+}