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)=>{ getPreferences(id).then((result)=>{
resolve({ resolve({
enabled: result.block_in_mode, enabled: result.block_in_mode,
list: result.block_in_list list: result.block_in_list,
blockAnonymous: result.block_in_clir
}); });
}).catch((err)=>{ }).catch((err)=>{
reject(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 padding-right $flex-gutter-md
.q-card-actions .q-card-actions
padding $flex-gutter-xs padding $flex-gutter-xs
#csc-login.mobile
.q-card
background-color transparent
</style> </style>

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

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

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