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/2
raxelsen 8 years ago
parent 077393c1dd
commit 4e6eb5a413

@ -1,7 +1,8 @@
import Vue from 'vue';
import { enableBlockIn, disableBlockIn,
getPreferences, addToBlockInList, removeFromBlockInList } from './subscriber';
import { enableBlockIn, disableBlockIn, enablePrivacy,
disablePrivacy, getPreferences, addToBlockInList,
removeFromBlockInList } from './subscriber';
export function enableIncomingCallBlocking(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.block_in_clir
});
}).catch((err)=>{
reject(err);
});
});
}

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

@ -1,15 +1,40 @@
<template>
<page title="Privacy"></page>
<page title="Privacy">
<q-toggle :label="((!callBlockingEnabled) ? 'Enable' : 'Disable') + ' Hide My Number'"
@input="toggle()" v-model="callBlockingEnabled"/>
</page>
</template>
<script>
import Page from '../../Page'
import { QField, QToggle, Toast } from 'quasar-framework'
export default {
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: {
Page
Page,
QToggle,
Toast,
QField
},
methods: {
toggle () {
this.$store.dispatch('callBlocking/togglePrivacy', this.callBlockingEnabled).then(()=>{
showToast('Hide my number ' + ((this.callBlockingEnabled) ? 'enabled' : 'disabled'));
}).catch((err)=>{
console.log(err);
});
}
}
}
</script>

@ -5,15 +5,18 @@ import { enableIncomingCallBlocking,
disableIncomingCallBlocking,
getIncomingCallBlocking,
addNumberToIncomingList,
removeNumberFromIncomingList
removeNumberFromIncomingList,
enablePrivacyCallBlocking,
disablePrivacyCallBlocking,
getPrivacyCallBlocking
} from '../api/call-blocking';
export default {
namespaced: true,
state: {
incomingEnabled: false,
incomingList: []
incomingList: [],
privacyEnabled: false
},
getters: {},
mutations: {
@ -26,6 +29,15 @@ export default {
loadIncoming(state, options) {
state.incomingEnabled = options.enabled;
state.incomingList = options.list;
},
enablePrivacy (state) {
state.privacyEnabled = true;
},
disablePrivacy (state) {
state.privacyEnabled= false;
},
loadPrivacy(state, options) {
state.privacyEnabled = options.enabled;
}
},
actions: {
@ -79,6 +91,35 @@ export default {
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.unshift((request, next)=>{
next(request.respondWith(JSON.stringify({
block_in_mode: false
block_in_mode: false,
block_in_clir: false
}), {
status: 200
}));
@ -22,6 +23,8 @@ describe('Subscriber', function(){
getPreferences('123').then((result)=>{
assert.property(result, 'block_in_mode');
assert.isFalse(result.block_in_mode);
assert.property(result, 'block_in_clir');
assert.isFalse(result.block_in_clir);
done();
}).catch((err)=>{
done(err);

@ -29,4 +29,12 @@ describe('CallBlockingModule', ()=>{
assert.equal(state.incomingEnabled, true);
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