aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/src/services/clearAtService.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/src/services/clearAtService.js')
-rw-r--r--apps/user_status/src/services/clearAtService.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/apps/user_status/src/services/clearAtService.js b/apps/user_status/src/services/clearAtService.js
new file mode 100644
index 00000000000..f23d267ad02
--- /dev/null
+++ b/apps/user_status/src/services/clearAtService.js
@@ -0,0 +1,47 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import {
+ dateFactory,
+} from './dateService.js'
+import moment from '@nextcloud/moment'
+
+/**
+ * Calculates the actual clearAt timestamp
+ *
+ * @param {object | null} clearAt The clear-at config
+ * @return {number | null}
+ */
+const getTimestampForClearAt = (clearAt) => {
+ if (clearAt === null) {
+ return null
+ }
+
+ const date = dateFactory()
+
+ if (clearAt.type === 'period') {
+ date.setSeconds(date.getSeconds() + clearAt.time)
+ return Math.floor(date.getTime() / 1000)
+ }
+ if (clearAt.type === 'end-of') {
+ switch (clearAt.time) {
+ case 'day':
+ case 'week':
+ return Number(moment(date).endOf(clearAt.time).format('X'))
+ }
+ }
+ // This is not an officially supported type
+ // but only used internally to show the remaining time
+ // in the Set Status Modal
+ if (clearAt.type === '_time') {
+ return clearAt.time
+ }
+
+ return null
+}
+
+export {
+ getTimestampForClearAt,
+}