TT#81163 CF: Improve UX by reducing requests

Change-Id: Iff1fd8aea69563e28b814e074d148f0119b4cef6
changes/74/39974/1
Carlo Venusino 5 years ago
parent 21a50406df
commit 50e6e4100c

@ -296,6 +296,21 @@ export function deleteDestinationsetById(id) {
}); });
} }
export function updateDestinationsetName(options) {
return new Promise((resolve, reject) => {
let headers = { 'Content-Type': 'application/json-patch+json' };
Vue.http.patch('api/cfdestinationsets/' + options.id, [{
op: 'replace',
path: '/name',
value: options.name
}], { headers: headers }).then((result) => {
resolve(result);
}).catch((err) => {
reject(err);
});
});
}
export function addDestinationToDestinationset(options) { export function addDestinationToDestinationset(options) {
let headers = { let headers = {
'Content-Type': 'application/json-patch+json' 'Content-Type': 'application/json-patch+json'

@ -213,8 +213,6 @@
destination: this.destination, destination: this.destination,
forwardGroupId: this.groupId forwardGroupId: this.groupId
}); });
await this.$store.dispatch('newCallForward/loadForwardGroups');
await this.$store.dispatch('newCallForward/loadMappings');
}, },
isVoiceMail(){ isVoiceMail(){
return this.destination.destination.includes('voicebox.local') return this.destination.destination.includes('voicebox.local')

@ -7,7 +7,8 @@ import {
deleteDestinationsetById, deleteDestinationsetById,
addDestinationToDestinationset, addDestinationToDestinationset,
addNewMapping, addNewMapping,
updateOwnPhoneTimeout updateOwnPhoneTimeout,
updateDestinationsetName
} from '../api/call-forward'; } from '../api/call-forward';
const ForwardGroup = { const ForwardGroup = {
@ -91,6 +92,9 @@ export default {
return $group.name === 'csc-busy' return $group.name === 'csc-busy'
}); });
return group && group.length > 0; return group && group.length > 0;
},
getMappings(state){
return state.mappings;
} }
}, },
mutations: { mutations: {
@ -162,7 +166,7 @@ export default {
try{ try{
const subscriberId = localStorage.getItem('subscriberId'); const subscriberId = localStorage.getItem('subscriberId');
const groupMappingId = ForwardGroup[data.name] ? ForwardGroup[data.name].mapping : await context.dispatch('getMappingIdByGroupName', data.name); const groupMappingId = ForwardGroup[data.name] ? ForwardGroup[data.name].mapping : await context.dispatch('getMappingIdByGroupName', data.name);
const allMappings = await getMappings(subscriberId); const allMappings = context.getters.getMappings;
let groupMappings = allMappings[groupMappingId]; let groupMappings = allMappings[groupMappingId];
groupMappings.push({ groupMappings.push({
@ -176,7 +180,6 @@ export default {
group: groupMappingId, group: groupMappingId,
subscriberId: subscriberId subscriberId: subscriberId
}); });
context.dispatch('loadMappings'); context.dispatch('loadMappings');
} }
catch(err){ catch(err){
@ -195,7 +198,6 @@ export default {
"priority": 1, "priority": 1,
"timeout": 5 "timeout": 5
}; };
await context.dispatch('editMapping', { await context.dispatch('editMapping', {
name: data.name, name: data.name,
groupId: newForwardGroupId groupId: newForwardGroupId
@ -333,14 +335,18 @@ export default {
return $destination.destination !== data.destination.destination; return $destination.destination !== data.destination.destination;
}); });
await addDestinationToDestinationset({
id: group.id,
data: destinations
});
if(destinations.length < 1){ if(destinations.length < 1){
await context.dispatch('deleteForwardGroup', group); await context.dispatch('deleteForwardGroup', group);
await context.dispatch('loadForwardGroups');
} }
else{
await addDestinationToDestinationset({
id: group.id,
data: destinations
});
await context.dispatch('loadMappings');
}
await context.dispatch('loadForwardGroups');
} }
catch(err){ catch(err){
console.log(err); console.log(err);
@ -400,52 +406,68 @@ export default {
}, },
async forwardAllCalls(context, noSelfNumber){ async forwardAllCalls(context, noSelfNumber){
try{ try{
const subscriberId = localStorage.getItem('subscriberId');
const mappings = context.getters.getMappings;
let unconditionalGroups = await context.dispatch('getForwardGroupByName', 'unconditional') let unconditionalGroups = await context.dispatch('getForwardGroupByName', 'unconditional')
let timeoutGroups = await context.dispatch('getForwardGroupByName', 'timeout'); let timeoutGroups = await context.dispatch('getForwardGroupByName', 'timeout');
if(noSelfNumber && timeoutGroups){ if(noSelfNumber && timeoutGroups){
for(let timeoutGroup of timeoutGroups){ for(let timeoutGroup of timeoutGroups){ // TODO multiple logic
if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){ if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){
const destinations = [...timeoutGroup.destinations]
await context.dispatch('addForwardGroup', { await updateDestinationsetName({
name: 'unconditional' id: timeoutGroup.id,
name: 'csc-unconditional'
}); });
await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups'); await addNewMapping({
await context.dispatch('replaceDestinations', { mappings: [],
groupName: 'unconditional', group: 'cft',
destinations: destinations subscriberId: subscriberId
}); });
await context.dispatch('deleteForwardGroup', timeoutGroup);
await context.dispatch('loadForwardGroups'); await addNewMapping({
mappings: mappings['cft'],
group: 'cfu',
subscriberId: subscriberId
});
} }
else { else {
await context.dispatch('loadForwardGroups');
await context.dispatch('addTempGroup', 'unconditional'); await context.dispatch('addTempGroup', 'unconditional');
} }
await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups');
} }
} }
else{ else{
if(unconditionalGroups ){ if(unconditionalGroups ){
for(let unconditionalGroup of unconditionalGroups){ for(let unconditionalGroup of unconditionalGroups){ // TODO multiple logic
if(!unconditionalGroup.id.toString().includes('temp')){ if(!unconditionalGroup.id.toString().includes('temp')){
const destinations = [...unconditionalGroup.destinations]
await context.dispatch('addForwardGroup', { await updateDestinationsetName({
name: 'timeout' id: unconditionalGroup.id,
name: 'csc-timeout'
});
await addNewMapping({
mappings: [],
group: 'cfu',
subscriberId: subscriberId
}); });
await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups'); await addNewMapping({
await context.dispatch('replaceDestinations', { mappings: mappings['cfu'],
groupName: 'timeout', group: 'cft',
destinations: destinations subscriberId: subscriberId
}); });
await context.dispatch('deleteForwardGroup', unconditionalGroup);
await context.dispatch('loadForwardGroups');
} }
else{ else{
await context.dispatch('loadForwardGroups');
await context.dispatch('addTempGroup', 'timeout'); await context.dispatch('addTempGroup', 'timeout');
} }
await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups');
} }
} }
} }
@ -470,7 +492,7 @@ export default {
let groupProps = await context.state.mappings[mappingId].filter(($group)=>{ let groupProps = await context.state.mappings[mappingId].filter(($group)=>{
return $group.destinationset_id === data.id; return $group.destinationset_id === data.id;
}); });
if(groupProps){ if(groupProps && groupProps[0]){
return groupProps[0].enabled; return groupProps[0].enabled;
} }
} }

Loading…
Cancel
Save