diff options
author | Joas Schilling <coding@schilljs.com> | 2022-05-24 15:49:34 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2022-07-01 12:33:07 +0200 |
commit | 4f7f4d74db0464b255eeedd4890b0604540e1e60 (patch) | |
tree | c1ea3cc60c8353c0aaed100733adf5b01611956b /apps/dav/src | |
parent | 5dee54d70bcd207c9b96a4cf6bb58f82fe9fbba9 (diff) | |
download | nextcloud-server-4f7f4d74db0464b255eeedd4890b0604540e1e60.tar.gz nextcloud-server-4f7f4d74db0464b255eeedd4890b0604540e1e60.zip |
Add UI to opt-in on the status automation
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/dav/src')
-rw-r--r-- | apps/dav/src/service/PreferenceService.js | 50 | ||||
-rw-r--r-- | apps/dav/src/views/Availability.vue | 17 |
2 files changed, 67 insertions, 0 deletions
diff --git a/apps/dav/src/service/PreferenceService.js b/apps/dav/src/service/PreferenceService.js new file mode 100644 index 00000000000..6b8d29029b5 --- /dev/null +++ b/apps/dav/src/service/PreferenceService.js @@ -0,0 +1,50 @@ +/** + * @copyright 2022 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import axios from '@nextcloud/axios' +import { generateOcsUrl } from '@nextcloud/router' + +/** + * Enable user status automation based on availability + */ +export async function enableUserStatusAutomation() { + return await axios.post( + generateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', { + appId: 'dav', + configKey: 'user_status_automation', + }), + { + configValue: 'yes', + } + ) +} + +/** + * Disable user status automation based on availability + */ +export async function disableUserStatusAutomation() { + return await axios.delete( + generateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', { + appId: 'dav', + configKey: 'user_status_automation', + }) + ) +} diff --git a/apps/dav/src/views/Availability.vue b/apps/dav/src/views/Availability.vue index f3b3ec34bd2..0441f5e9dc7 100644 --- a/apps/dav/src/views/Availability.vue +++ b/apps/dav/src/views/Availability.vue @@ -24,6 +24,10 @@ :l10n-saturday="$t('dav', 'Saturday')" :l10n-sunday="$t('dav', 'Sunday')" /> + <CheckboxRadioSwitch :checked.sync="automated"> + {{ $t('dav', 'Automatically set user status to "Do not distrub" outside of visibility to mute all notifications.') }} + </CheckboxRadioSwitch> + <Button :disabled="loading || saving" type="primary" @click="save"> @@ -34,6 +38,7 @@ <script> import { CalendarAvailability } from '@nextcloud/calendar-availability-vue' +import { loadState } from '@nextcloud/initial-state' import { showError, showSuccess, @@ -43,8 +48,13 @@ import { getEmptySlots, saveScheduleInboxAvailability, } from '../service/CalendarService' +import { + enableUserStatusAutomation, + disableUserStatusAutomation, +} from '../service/PreferenceService' import jstz from 'jstimezonedetect' import Button from '@nextcloud/vue/dist/Components/Button' +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' import TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker' @@ -52,6 +62,7 @@ export default { name: 'Availability', components: { Button, + CheckboxRadioSwitch, CalendarAvailability, SettingsSection, TimezonePicker, @@ -66,6 +77,7 @@ export default { saving: false, timezone: defaultTimezoneId, slots: getEmptySlots(), + automated: loadState('dav', 'user_status_automation') === 'yes', } }, async mounted() { @@ -96,6 +108,11 @@ export default { this.saving = true await saveScheduleInboxAvailability(this.slots, this.timezone) + if (this.automated) { + await enableUserStatusAutomation() + } else { + await disableUserStatusAutomation() + } showSuccess(t('dav', 'Saved availability')) } catch (e) { |