diff options
Diffstat (limited to 'apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue')
-rw-r--r-- | apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue new file mode 100644 index 00000000000..6eb7cf8c34c --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue @@ -0,0 +1,73 @@ +<!-- + - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <div class="checkbox-container"> + <NcCheckboxRadioSwitch type="switch" + :checked.sync="isProfileEnabled" + :loading="loading" + @update:checked="saveEnableProfile"> + {{ t('settings', 'Enable profile') }} + </NcCheckboxRadioSwitch> + </div> +</template> + +<script> +import { emit } from '@nextcloud/event-bus' + +import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js' +import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js' +import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch' +import { handleError } from '../../../utils/handlers.ts' + +export default { + name: 'ProfileCheckbox', + + components: { + NcCheckboxRadioSwitch, + }, + + props: { + profileEnabled: { + type: Boolean, + required: true, + }, + }, + + data() { + return { + isProfileEnabled: this.profileEnabled, + loading: false, + } + }, + + methods: { + async saveEnableProfile() { + this.loading = true + try { + const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, this.isProfileEnabled) + this.handleResponse({ + isProfileEnabled: this.isProfileEnabled, + status: responseData.ocs?.meta?.status, + }) + } catch (e) { + this.handleResponse({ + errorMessage: t('settings', 'Unable to update profile enabled state'), + error: e, + }) + } + }, + + handleResponse({ isProfileEnabled, status, errorMessage, error }) { + if (status === 'ok') { + emit('settings:profile-enabled:updated', isProfileEnabled) + } else { + handleError(error, errorMessage) + } + this.loading = false + }, + }, +} +</script> |