diff --git a/src/api/call-blocking.js b/src/api/call-blocking.js index 9e0db2d9..baeaeca8 100644 --- a/src/api/call-blocking.js +++ b/src/api/call-blocking.js @@ -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.clir + }); + }).catch((err)=>{ + reject(err); + }); + }); +} diff --git a/src/api/subscriber.js b/src/api/subscriber.js index 1a9ce94e..5301575d 100644 --- a/src/api/subscriber.js +++ b/src/api/subscriber.js @@ -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, 'clir', value); +} + +export function enablePrivacy(id) { + return setPrivacy(id, true); +} + +export function disablePrivacy(id) { + return setPrivacy(id, false); +} diff --git a/src/components/pages/CallBlocking/Privacy.vue b/src/components/pages/CallBlocking/Privacy.vue index 6c07a8fd..b44d5416 100644 --- a/src/components/pages/CallBlocking/Privacy.vue +++ b/src/components/pages/CallBlocking/Privacy.vue @@ -1,15 +1,42 @@ diff --git a/src/store/call-blocking.js b/src/store/call-blocking.js index 7471cffc..76079234 100644 --- a/src/store/call-blocking.js +++ b/src/store/call-blocking.js @@ -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); + }); + }); } } }; diff --git a/t/api/subscriber.js b/t/api/subscriber.js index 5f4cccc3..5f4e8b9a 100644 --- a/t/api/subscriber.js +++ b/t/api/subscriber.js @@ -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, + 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, 'clir'); + assert.isFalse(result.clir); done(); }).catch((err)=>{ done(err); diff --git a/t/store/call-blocking.js b/t/store/call-blocking.js index ecb3e5f9..a4da81c2 100644 --- a/t/store/call-blocking.js +++ b/t/store/call-blocking.js @@ -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); + }); });