TT#47588 CallBlocking: As a Customer, I want to block anonymous incoming calls

Change-Id: I29b336a207857cebc3bb4d923b597e822e295430
changes/83/24783/2
Hans-Peter Herzog 7 years ago
parent 02137b1b48
commit b346008d75

@ -30,7 +30,8 @@ export function getIncomingCallBlocking(id) {
getPreferences(id).then((result)=>{
resolve({
enabled: result.block_in_mode,
list: result.block_in_list
list: result.block_in_list,
blockAnonymous: result.block_in_clir
});
}).catch((err)=>{
reject(err);

@ -291,3 +291,15 @@ export function getSubscriber(id) {
});
});
}
export function setBlockAnonymous(id, value) {
return setPreference(id, 'block_in_clir', value);
}
export function blockAnonymous(id) {
return setBlockAnonymous(id, true);
}
export function allowAnonymous(id) {
return setBlockAnonymous(id, false);
}

@ -178,4 +178,7 @@
padding-right $flex-gutter-md
.q-card-actions
padding $flex-gutter-xs
#csc-login.mobile
.q-card
background-color transparent
</style>

@ -2,6 +2,21 @@
<csc-page
:is-list="true"
>
<q-field
v-if="pageName === 'incoming'"
:class="blockAnonymousClasses"
>
<q-toggle
:label="$t('callBlocking.anonymousBlocked')"
:value="isAnonymousBlocked"
checked-icon="block"
unchecked-icon="block"
@input="toggleBlockAnonymous()"
/>
<csc-spinner
v-if="isNumberListLoading || isAnonymousBlockRequesting"
/>
</q-field>
<div
class="row"
>
@ -199,7 +214,9 @@
'isNumberListLoading',
'numbers',
'currentNumberIndex',
'listMode'
'listMode',
'isAnonymousBlocked',
'isAnonymousBlockRequesting'
]),
toggleButtonLabel() {
if(!this.enabled) {
@ -226,6 +243,13 @@
number: this.numbers[this.currentRemovingIndex]
});
}
},
blockAnonymousClasses() {
let classes = ['csc-block-anonymous'];
if(!this.isAnonymousBlocked) {
classes.push('csc-toggle-disabled');
}
return classes;
}
},
watch: {
@ -258,6 +282,9 @@
},
updateListMode(listMode) {
this.$store.dispatch('callBlocking/toggle' + this.suffix, listMode === 'whitelist');
},
toggleBlockAnonymous() {
this.$store.dispatch('callBlocking/toggleBlockAnonymous', !this.isAnonymousBlocked);
}
}
}
@ -283,4 +310,7 @@
.csc-list-item.q-item.csc-blocked-number
padding-top $flex-gutter-xs
padding-bottom $flex-gutter-xs
.csc-block-anonymous
margin-bottom $flex-gutter-md
</style>

@ -393,7 +393,8 @@
"privacyDisabledToast": "Your number is visible to the callee",
"privacyDisabledLabel": "Your number is visible to the callee",
"number": "Number",
"listEmptyMessage": "No numbers found"
"listEmptyMessage": "No numbers found",
"anonymousBlocked": "All anonymous incoming calls are blocked"
},
"communication": {
"sendFax": "Send Fax",

@ -17,12 +17,15 @@ import {
getPrivacyCallBlocking
} from '../api/call-blocking';
import {
setPrivacy
setPrivacy,
blockAnonymous,
allowAnonymous
} from '../api/subscriber';
export default {
namespaced: true,
state: {
blockAnonymous: null,
enabled: false,
list: [],
privacy: false,
@ -30,6 +33,7 @@ export default {
privacyUpdated: false,
privacyError: null,
toggleState: RequestState.initiated,
toggleBlockAnonymousState: RequestState.initiated,
addNumberState: RequestState.initiated,
editNumberState: RequestState.initiated,
removeNumberState: RequestState.initiated,
@ -95,6 +99,12 @@ export default {
else {
return 'blacklist';
}
},
isAnonymousBlocked(state) {
return state.blockAnonymous === true;
},
isAnonymousBlockRequesting(state) {
return state.toggleBlockAnonymousState === RequestState.requesting;
}
},
mutations: {
@ -170,9 +180,20 @@ export default {
state.numberListState = RequestState.succeeded;
state.enabled = options.enabled;
state.list = options.list;
state.blockAnonymous = options.blockAnonymous;
},
numberListFailed(state) {
state.numberListState = RequestState.failed;
},
toggleBlockAnonymousRequesting(state) {
state.toggleBlockAnonymousState = RequestState.requesting;
},
toggleBlockAnonymousSucceeded(state, blockAnonymous) {
state.blockAnonymous = blockAnonymous;
state.toggleBlockAnonymousState = RequestState.succeeded;
},
toggleBlockAnonymousFailed(state) {
state.toggleBlockAnonymousState = RequestState.failed;
}
},
actions: {
@ -321,6 +342,21 @@ export default {
}).catch((err)=>{
context.commit('privacyLoadingFailed', err.message);
});
},
toggleBlockAnonymous(context, blocked) {
let action = null;
if(blocked) {
action = blockAnonymous(localStorage.getItem('subscriberId'));
}
else {
action = allowAnonymous(localStorage.getItem('subscriberId'));
}
context.commit('toggleBlockAnonymousRequesting');
action.then(()=>{
context.commit('toggleBlockAnonymousSucceeded', blocked);
}).catch((err)=>{
context.commit('toggleBlockAnonymousFailed', err.message);
});
}
}
};

Loading…
Cancel
Save