diff options
Diffstat (limited to 'apps/user_status/src/services/clearAtService.js')
-rw-r--r-- | apps/user_status/src/services/clearAtService.js | 47 |
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, +} |