TT#23169 As a Customer i want to hide my number

What has been done:
- TT#23267, CallBlocking: Implement action and api request
- TT#23266, CallBlocking: Implement toggle button in the component

Change-Id: I993c8585dd21064b2f00d028dace5ef6c80f894d
changes/54/16254/3
raxelsen 9 years ago
parent 077393c1dd
commit 649d1476ad

@ -1,7 +1,8 @@
import Vue from 'vue'; import Vue from 'vue';
import { enableBlockIn, disableBlockIn, import { enableBlockIn, disableBlockIn, enablePrivacy,
getPreferences, addToBlockInList, removeFromBlockInList } from './subscriber'; disablePrivacy, getPreferences, addToBlockInList,
removeFromBlockInList } from './subscriber';
export function enableIncomingCallBlocking(id) { export function enableIncomingCallBlocking(id) {
return enableBlockIn(id); return enableBlockIn(id);
@ -47,3 +48,23 @@ export function removeNumberFromIncomingList(id, index) {
}); });
}); });
} }
export function enablePrivacyCallBlocking(id) {
return enablePrivacy(id);
}
export function disablePrivacyCallBlocking(id) {
return disablePrivacy(id);
}
export function getPrivacyCallBlocking(id) {
return new Promise((resolve, reject)=>{
getPreferences(id).then((result)=>{
resolve({
enabled: result.clir
});
}).catch((err)=>{
reject(err);
});
});
}

@ -106,3 +106,15 @@ export function addToBlockInList(id, number) {
export function removeFromBlockInList(id, index) { export function removeFromBlockInList(id, index) {
return removeItemFromArrayPreference(id, 'block_in_list', index); return removeItemFromArrayPreference(id, 'block_in_list', index);
} }
export function setPrivacy(id, value) {
return setPreference(id, 'clir', value);
}
export function enablePrivacy(id) {
return setPrivacy(id, true);
}
export function disablePrivacy(id) {
return setPrivacy(id, false);
}

@ -1,15 +1,42 @@
<template> <template>
<page title="Privacy"></page> <page title="Privacy">
<q-toggle :label="(!callBlockingEnabled ? 'Hide' : 'Show') + ' Own Number'"
@input="toggle()" v-model="callBlockingEnabled"/>
</page>
</template> </template>
<script> <script>
import { showToast } from '../../../helpers/ui'
import Page from '../../Page' import Page from '../../Page'
import { QField, QToggle, Toast } from 'quasar-framework'
export default { export default {
data () { data () {
return {} return {
callBlockingEnabled: false
}
},
mounted() {
this.$store.dispatch('callBlocking/loadPrivacy').then(()=>{
this.callBlockingEnabled = this.$store.state.callBlocking.privacyEnabled;
}).catch((err)=>{
console.log(err);
});
}, },
components: { components: {
Page Page,
QToggle,
Toast,
QField
},
methods: {
toggle () {
this.$store.dispatch('callBlocking/togglePrivacy', this.callBlockingEnabled).then(()=>{
showToast('Own number will now be ' + (this.callBlockingEnabled ? 'hidden' : 'shown') +
' on outbound calls');
}).catch((err)=>{
console.log(err);
});
}
} }
} }
</script> </script>

@ -5,15 +5,18 @@ import { enableIncomingCallBlocking,
disableIncomingCallBlocking, disableIncomingCallBlocking,
getIncomingCallBlocking, getIncomingCallBlocking,
addNumberToIncomingList, addNumberToIncomingList,
removeNumberFromIncomingList removeNumberFromIncomingList,
enablePrivacyCallBlocking,
disablePrivacyCallBlocking,
getPrivacyCallBlocking
} from '../api/call-blocking'; } from '../api/call-blocking';
export default { export default {
namespaced: true, namespaced: true,
state: { state: {
incomingEnabled: false, incomingEnabled: false,
incomingList: [] incomingList: [],
privacyEnabled: false
}, },
getters: {}, getters: {},
mutations: { mutations: {
@ -26,6 +29,15 @@ export default {
loadIncoming(state, options) { loadIncoming(state, options) {
state.incomingEnabled = options.enabled; state.incomingEnabled = options.enabled;
state.incomingList = options.list; state.incomingList = options.list;
},
enablePrivacy (state) {
state.privacyEnabled = true;
},
disablePrivacy (state) {
state.privacyEnabled= false;
},
loadPrivacy(state, options) {
state.privacyEnabled = options.enabled;
} }
}, },
actions: { actions: {
@ -79,6 +91,35 @@ export default {
reject(err); reject(err);
}); });
}); });
},
togglePrivacy(context, enabled) {
return new Promise((resolve, reject)=>{
if(enabled) {
enablePrivacyCallBlocking(localStorage.getItem('subscriberId')).then(()=>{
context.commit('enablePrivacy');
resolve();
}).catch((err)=>{
reject(err);
});
} else {
disablePrivacyCallBlocking(localStorage.getItem('subscriberId')).then(()=>{
context.commit('disablePrivacy');
resolve();
}).catch((err)=>{
reject(err);
});
}
});
},
loadPrivacy(context) {
return new Promise((resolve, reject)=>{
getPrivacyCallBlocking(localStorage.getItem('subscriberId')).then((result)=>{
context.commit('loadPrivacy', result);
resolve();
}).catch((err)=>{
reject(err);
});
});
} }
} }
}; };

@ -14,7 +14,8 @@ describe('Subscriber', function(){
Vue.http.interceptors = []; Vue.http.interceptors = [];
Vue.http.interceptors.unshift((request, next)=>{ Vue.http.interceptors.unshift((request, next)=>{
next(request.respondWith(JSON.stringify({ next(request.respondWith(JSON.stringify({
block_in_mode: false block_in_mode: false,
clir: false
}), { }), {
status: 200 status: 200
})); }));
@ -22,6 +23,8 @@ describe('Subscriber', function(){
getPreferences('123').then((result)=>{ getPreferences('123').then((result)=>{
assert.property(result, 'block_in_mode'); assert.property(result, 'block_in_mode');
assert.isFalse(result.block_in_mode); assert.isFalse(result.block_in_mode);
assert.property(result, 'clir');
assert.isFalse(result.clir);
done(); done();
}).catch((err)=>{ }).catch((err)=>{
done(err); done(err);

@ -29,4 +29,12 @@ describe('CallBlockingModule', ()=>{
assert.equal(state.incomingEnabled, true); assert.equal(state.incomingEnabled, true);
assert.deepEqual(state.incomingList, list); assert.deepEqual(state.incomingList, list);
}); });
it('should enable/disable privacy call blocking', ()=>{
var state = {};
CallBlockingModule.mutations.enablePrivacy(state);
assert.equal(state.privacyEnabled, true);
CallBlockingModule.mutations.disablePrivacy(state);
assert.equal(state.privacyEnabled, false);
});
}); });

Loading…
Cancel
Save