Refine unsupported federation scope checks

Signed-off-by: Christopher Ng <chrng8@gmail.com>
pull/28004/head
Christopher Ng 2021-07-16 05:46:04 +07:00
parent 6744f3c083
commit 74aa115125
3 changed files with 22 additions and 4 deletions

@ -149,6 +149,7 @@ class PersonalInfo implements ISettings {
$accountParameters = [
'displayNameChangeSupported' => $user->canChangeDisplayName(),
'lookupServerUploadEnabled' => $lookupServerUploadEnabled,
];
$this->initialStateService->provideInitialState('emails', $emails);

@ -62,7 +62,7 @@ import { savePrimaryEmail, removeAdditionalEmail } from '../../../service/Person
import { DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants'
const { additionalEmails, primaryEmail } = loadState('settings', 'emails', {})
const accountParams = loadState('settings', 'accountParameters', {})
const { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})
export default {
name: 'EmailSection',
@ -74,7 +74,6 @@ export default {
data() {
return {
accountParams,
additionalEmails,
primaryEmail,
isValidForm: true,
@ -83,7 +82,7 @@ export default {
computed: {
isDisplayNameChangeSupported() {
return this.accountParams.displayNameChangeSupported
return displayNameChangeSupported
},
primaryEmailValue: {

@ -42,11 +42,14 @@
<script>
import Actions from '@nextcloud/vue/dist/Components/Actions'
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'
import { loadState } from '@nextcloud/initial-state'
import { showError } from '@nextcloud/dialogs'
import { SCOPE_ENUM, SCOPE_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'
import { savePrimaryEmailScope, saveAdditionalEmailScope } from '../../../service/PersonalInfoService'
const { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {})
// TODO hardcoded for email, should abstract this for other sections
const excludedScopes = [SCOPE_ENUM.PRIVATE]
@ -80,11 +83,26 @@ export default {
data() {
return {
initialScope: this.scope,
federationScopes: Object.values(SCOPE_PROPERTY_ENUM).filter(({ name }) => !excludedScopes.includes(name)),
}
},
computed: {
federationScopes() {
return Object.values(SCOPE_PROPERTY_ENUM).filter(({ name }) => !this.unsupportedScopes.includes(name))
},
unsupportedScopes() {
if (!lookupServerUploadEnabled) {
return [
...excludedScopes,
SCOPE_ENUM.FEDERATED,
SCOPE_ENUM.PUBLISHED,
]
}
return excludedScopes
},
scopeIcon() {
return SCOPE_PROPERTY_ENUM[this.scope].iconClass
},