TT#23369 CallBlocking: As a Customer I want to enable/disable the functionality

Change-Id: I236db3253a156a6e6e0e152113b7b1887a0d4655
changes/30/16130/1
Hans-Peter Herzog 8 years ago
parent dd0319eeb1
commit 800cd24793

@ -0,0 +1,23 @@
import Vue from 'vue';
import { enableBlockIn, disableBlockIn, getPreferences } from './subscriber';
export function enableIncomingCallBlocking(id) {
return enableBlockIn(id);
}
export function disableIncomingCallBlocking(id) {
return disableBlockIn(id);
}
export function getIncomingCallBlocking(id) {
return new Promise((resolve, reject)=>{
getPreferences(id).then((result)=>{
resolve({
enabled: result.block_in_mode
});
}).catch((err)=>{
reject(err);
});
});
}

@ -0,0 +1,36 @@
import Vue from 'vue';
export function getPreferences(id) {
return new Promise((resolve, reject)=>{
Vue.http.get('/api/subscriberpreferences/' + id).then((result)=>{
resolve(JSON.parse(result.body));
}).catch((err)=>{
reject(err);
});
});
}
export function setPreference(id, field, value) {
return new Promise((resolve, reject)=>{
var pref = {};
pref[field] = value;
Vue.http.put('/api/subscriberpreferences/' + id, pref).then((result)=>{
resolve();
}).catch((err)=>{
reject(err);
});
});
}
export function setBlockInMode(id, value) {
return setPreference(id, 'block_in_mode', value);
}
export function enableBlockIn(id) {
return setBlockInMode(id, true);
}
export function disableBlockIn(id) {
return setBlockInMode(id, false);
}

@ -1,15 +1,45 @@
<template>
<page title="Incoming"></page>
<page title="Incoming Calls">
<q-toggle :label="((!callBlockingEnabled)?'Enable':'Disable') + ' Call Blocking'"
@input="toggleIncoming()" v-model="callBlockingEnabled"/>
</page>
</template>
<script>
import { startLoading, stopLoading, showGlobalError } from '../../../helpers/ui'
import Page from '../../Page'
import { QField, QToggle, Toast } from 'quasar-framework'
export default {
data () {
return {}
return {
callBlockingEnabled: false
}
},
mounted() {
this.$store.dispatch('callBlocking/loadIncoming').then(()=>{
this.callBlockingEnabled = this.$store.state.callBlocking.incomingEnabled;
}).catch((err)=>{
console.log(err);
});
},
components: {
Page
Page,
QToggle,
Toast,
QField
},
methods: {
toggleIncoming () {
this.$store.dispatch('callBlocking/toggleIncoming', this.callBlockingEnabled).then(()=>{
Toast.create({
html: 'Call blocking for incoming calls ' + ((this.callBlockingEnabled)?'enabled':'disabled'),
color: 'white',
bgColor: '#68A44E'
});
}).catch((err)=>{
console.log(err);
});
}
}
}
</script>

@ -0,0 +1,59 @@
'use strict';
import _ from 'lodash';
import { enableIncomingCallBlocking,
disableIncomingCallBlocking,
getIncomingCallBlocking
} from '../api/call-blocking';
export default {
namespaced: true,
state: {
incomingEnabled: false,
incomingList: []
},
getters: {},
mutations: {
enableIncoming (state) {
state.incomingEnabled = true;
},
disableIncoming (state) {
state.incomingEnabled = false;
},
loadIncoming(state, options) {
state.incomingEnabled = options.enabled;
}
},
actions: {
toggleIncoming(context, enabled) {
return new Promise((resolve, reject)=>{
if(enabled) {
enableIncomingCallBlocking(localStorage.getItem('subscriberId')).then(()=>{
context.commit('enableIncoming');
resolve();
}).catch((err)=>{
reject(err);
});
} else {
disableIncomingCallBlocking(localStorage.getItem('subscriberId')).then(()=>{
context.commit('disableIncoming');
resolve();
}).catch((err)=>{
reject(err);
});
}
});
},
loadIncoming(context) {
return new Promise((resolve, reject)=>{
getIncomingCallBlocking(localStorage.getItem('subscriberId')).then((result)=>{
context.commit('loadIncoming', result);
resolve();
}).catch((err)=>{
reject(err);
});
});
}
}
};

@ -6,6 +6,7 @@ import Vuex from 'vuex'
import UserModule from './user'
import PbxGroupsModule from './pbx-groups'
import CallBlockingModule from './call-blocking'
var rtcEngineClient = null;
var rtcEngineNetwork = null;
@ -15,7 +16,8 @@ Vue.use(Vuex);
export const store = new Vuex.Store({
modules: {
user: UserModule,
pbxGroups: PbxGroupsModule
pbxGroups: PbxGroupsModule,
callBlocking: CallBlockingModule
},
state: {
rtcEngineConnected: false

Loading…
Cancel
Save