TT#102703 CSC: Can select/persist/reset the preferred language

AC
Can select a language from a list of given languages
Can persist the preferred language
Can reset the language to "Domain default"

Change-Id: Ic1824a91b5a04e2b7ddb2c2ec4a89712e278ca2f
pull/4/head
Carlo Venusino 4 years ago
parent 507f9ee0af
commit b5cec06671

@ -9,6 +9,7 @@ import {
get,
patchAdd,
patchReplace,
patchRemove,
patchReplaceFull,
patchAddFull
@ -27,6 +28,11 @@ export function getPreferences (id) {
})
}
export async function getPreferencesDefs (id) {
const result = await Vue.http.get('api/subscriberpreferencedefs/')
return getJsonBody(result.body)
}
export async function setPreference (id, field, value) {
try {
await replacePreference(id, field, value)
@ -43,6 +49,13 @@ export async function setPreference (id, field, value) {
}
}
export async function removePreference (id, field) {
return await patchRemove({
path: 'api/subscriberpreferences/' + id,
fieldPath: field
})
}
export function addPreference (id, field, value) {
return new Promise((resolve, reject) => {
patchAdd({

@ -6,5 +6,4 @@ export default ({ Vue, app }) => {
{ label: app.i18n.t('communication.quality.super'), value: 'super' }
]
Vue.prototype.$faxQualityOptionsDefault = Vue.prototype.$faxQualityOptions[0]
Vue.prototype.$defaultVoicePromptLanguage = 'use domain default'
}

@ -30,7 +30,7 @@
<q-item>
<q-item-section>
<q-select
v-model="language"
v-model="selectedOption"
dense
emit-value
map-options
@ -38,7 +38,8 @@
:readonly="dataLoading"
:label="$t('callSettings.language')"
:title="$t('callSettings.languageHint')"
:options="languages"
:options="options"
@input="languageSelected()"
/>
</q-item-section>
<q-item-section
@ -76,12 +77,8 @@ export default {
},
data () {
return {
languages: [
{
value: 0,
label: 'Domain default'
}
]
selectedOption: this.$defaultVoicePromptLanguage,
options: []
}
},
computed: {
@ -90,7 +87,9 @@ export default {
]),
...mapGetters('callSettings', [
'musicOnHold',
'language'
'language',
'defaultLanguage',
'languages'
]),
...mapWaitingGetters({
processingSubscriberPreferences: 'processing subscriberPreferences'
@ -99,9 +98,11 @@ export default {
return !this.subscriberPreferencesInitialized || this.processingSubscriberPreferences
}
},
mounted () {
async mounted () {
try {
this.loadSubscriberPreferencesAction()
await this.loadSubscriberPreferencesAction()
this.options = await this.languages
this.selectedOption = this.language || await this.defaultLanguage
} catch (err) {
showGlobalError(err?.message)
}
@ -118,6 +119,13 @@ export default {
} catch (err) {
showGlobalError(err?.message)
}
},
async languageSelected () {
try {
await this.setLanguage(this.selectedOption)
} catch (err) {
showGlobalError(err?.message)
}
}
}
}

@ -1,6 +1,8 @@
import {
getPreferences,
setPreference
getPreferencesDefs,
setPreference,
removePreference
} from '../api/subscriber'
export default {
@ -16,8 +18,19 @@ export default {
musicOnHold (state) {
return state.subscriberPreferences.music_on_hold
},
language (state, context) {
return state.subscriberPreferences.language || state.$defaultVoicePromptLanguage
language (state) {
return state.subscriberPreferences.language
},
async defaultLanguage (state, getters) {
const languages = await getters.languages
return languages.find(lang => lang.default_val).label
},
async languages (state) {
const preferencesDefs = await getPreferencesDefs()
return preferencesDefs
.language
.enum_values
.map((lang) => { return { value: lang.value, label: lang.label, default_val: lang.default_val } })
}
},
mutations: {
@ -43,6 +56,22 @@ export default {
},
async setMusicOnHold (context, value) {
await context.dispatch('fieldUpdateAction', { field: 'music_on_hold', value })
},
async setLanguage (context, value) {
const subscriberId = context.getters.subscriberId
if (value) {
await setPreference(subscriberId, 'language', value)
context.commit('subscriberPreferencesUpdate', {
field: 'language',
value: value
})
} else {
await removePreference(subscriberId, 'language')
context.commit('subscriberPreferencesUpdate', {
field: 'language',
value: null
})
}
}
}
}

Loading…
Cancel
Save