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);
+ });
});