admin-fe/src/views/settings/components/inputComponents/RegInvitesInput.vue
2020-04-02 22:33:12 +03:00

74 lines
2.6 KiB
Vue

<template>
<el-switch
:value="data[setting.key]"
:data-search="setting.key"
class="switch-input"
@change="updateSetting($event, settingGroup.group, settingGroup.key, setting.key, setting.type)"/>
</template>
<script>
export default {
name: 'RegInvitesInput',
props: {
data: {
type: [Object, Array],
default: function() {
return {}
}
},
setting: {
type: Object,
default: function() {
return {}
}
},
settingGroup: {
type: Object,
default: function() {
return {}
}
}
},
methods: {
updateSetting(value, group, key, input, type) {
const registrationsOpen = this.$store.state.settings.settings[group][key][':registrations_open']
const invitesEnabled = this.$store.state.settings.settings[group][key][':invites_enabled']
if (input === ':registrations_open' && value && invitesEnabled) {
this.$confirm(
'Enabling this setting requires invites to be disabled. Are you sure you want to open registrations?',
'Warning',
{ confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning'
}).then(() => {
this.$store.dispatch('UpdateSettings', { group, key, input, value, type })
this.$store.dispatch('UpdateSettings', { group, key, input: ':invites_enabled', value: false, type })
this.$store.dispatch('UpdateState', { group, key, input, value })
this.$store.dispatch('UpdateState', { group, key, input: ':invites_enabled', value: false })
})
} else if (input === ':invites_enabled' && value && registrationsOpen) {
this.$confirm(
'Enabling this setting requires registrations to be disabled. Are you sure you want to enable invitations?',
'Warning',
{ confirmButtonText: 'OK',
cancelButtonText: 'Cancel',
type: 'warning'
}).then(() => {
this.$store.dispatch('UpdateSettings', { group, key, input, value, type })
this.$store.dispatch('UpdateSettings', { group, key, input: ':registrations_open', value: false, type })
this.$store.dispatch('UpdateState', { group, key, input, value })
this.$store.dispatch('UpdateState', { group, key, input: ':registrations_open', value: false })
})
} else {
this.$store.dispatch('UpdateSettings', { group, key, input, value, type })
this.$store.dispatch('UpdateState', { group, key, input, value })
}
}
}
}
</script>
<style rel='stylesheet/scss' lang='scss'>
@import '../../styles/main';
@include settings
</style>