TT#23176 CallBlocking: As a Customer I want to remove a number from the list

Change-Id: I77ac239f7c8ec6ac97f604a692f672008d9eef01
changes/11/16211/1
Hans-Peter Herzog 8 years ago
parent 24daa2070b
commit dd4ea075de

@ -1,7 +1,7 @@
import Vue from 'vue';
import { enableBlockIn, disableBlockIn,
getPreferences, addToBlockInList } from './subscriber';
getPreferences, addToBlockInList, removeFromBlockInList } from './subscriber';
export function enableIncomingCallBlocking(id) {
return enableBlockIn(id);
@ -37,3 +37,13 @@ export function addNumberToIncomingList(id, number) {
}
});
}
export function removeNumberFromIncomingList(id, index) {
return new Promise((resolve, reject)=>{
removeFromBlockInList(id, index).then(()=>{
resolve();
}).catch((err)=>{
reject(err);
});
});
}

@ -65,6 +65,26 @@ export function appendItemToArrayPreference(id, field, value) {
});
}
export function removeItemFromArrayPreference(id, field, itemIndex) {
return new Promise((resolve, reject)=>{
Promise.resolve().then(()=>{
return getPreferences(id);
}).then((result)=>{
var prefs = _.cloneDeep(result);
delete prefs._links;
prefs[field] = _.get(prefs, field, []);
_.remove(prefs[field], (value, index)=>{
return index === itemIndex;
});
return Vue.http.put('/api/subscriberpreferences/' + id, prefs);
}).then(()=>{
resolve();
}).catch((err)=>{
reject();
});
});
}
export function setBlockInMode(id, value) {
return setPreference(id, 'block_in_mode', value);
}
@ -80,3 +100,7 @@ export function disableBlockIn(id) {
export function addToBlockInList(id, number) {
return prependItemToArrayPreference(id, 'block_in_list', number);
}
export function removeFromBlockInList(id, index) {
return removeItemFromArrayPreference(id, 'block_in_list', index);
}

@ -47,11 +47,11 @@
:label="$t('mainNavigation.callBlocking.title')"
:sublabel="$t('mainNavigation.callBlocking.subTitle')">
<q-side-link item to="/user/call-blocking/incoming">
<q-item-side icon="fa-arrow-circle-o-left"/>
<q-item-side icon="call received"/>
<q-item-main :label="$t('mainNavigation.callBlocking.incoming')"/>
</q-side-link>
<q-side-link item to="/user/call-blocking/outgoing">
<q-item-side icon="fa-arrow-circle-o-right"/>
<q-item-side icon="call made"/>
<q-item-main :label="$t('mainNavigation.callBlocking.outgoing')"/>
</q-side-link>
<q-side-link item to="/user/call-blocking/privacy">
@ -233,6 +233,7 @@
.q-card {
margin:15px;
margin-left: 0px;
margin-right: 0px;
}
.q-card.page {

@ -1,8 +1,8 @@
<template>
<page title="Incoming Calls">
<page title="Block incoming calls">
<q-field id="toggle-incoming">
<q-toggle :label="((!callBlockingEnabled)?'Enable':'Disable') + ' Call Blocking'"
@input="toggleIncoming()" v-model="callBlockingEnabled"/>
@input="toggle()" v-model="callBlockingEnabled"/>
</q-field>
<div id="add-number-form">
<q-field v-if="!addFormEnabled">
@ -11,25 +11,31 @@
<div v-if="addFormEnabled">
<q-field :error="addFormError" error-label="Input a valid number or subscriber name">
<q-input type="text" float-label="Number" v-model="newNumber"
clearable @keyup.enter="saveNewNumber()" />
clearable @keyup.enter="saveNumber()" />
</q-field>
<q-btn @click="disableAddForm()">Cancel</q-btn>
<q-btn color="primary" icon-right="fa-save" @click="saveNewNumber()">Save</q-btn>
<q-btn color="primary" icon-right="fa-save" @click="saveNumber()">Save</q-btn>
</div>
</div>
<q-card v-for="number in numbers">
<q-card-main>
{{ number }}
</q-card-main>
</q-card>
<div>
<q-card v-for="(number, index) in numbers">
<q-card-title>
{{ number }}
<q-icon slot="right" name="fa-remove" @click="removeNumber(index)" class="cursor-pointer"></q-icon>
</q-card-title>
</q-card>
<q-inner-loading :visible="listLoading">
<q-spinner-gears size="50px" color="primary"></q-spinner-gears>
</q-inner-loading>
</div>
</page>
</template>
<script>
import { startLoading, stopLoading, showGlobalError } from '../../../helpers/ui'
import { startLoading, stopLoading, showGlobalError, showToast } from '../../../helpers/ui'
import Page from '../../Page'
import { QInput, QCard, QBtn, QField,
QToggle, Toast, QList, QItem, QItemMain, QCardMain } from 'quasar-framework'
import { QInput, QCard, QBtn, QField, QIcon, QCardTitle, Dialog, QSpinnerGears,
QToggle, Toast, QList, QItem, QItemMain, QCardMain, QInnerLoading } from 'quasar-framework'
export default {
data () {
return {
@ -41,10 +47,12 @@
}
},
mounted() {
this.listLoading = true;
this.$store.dispatch('callBlocking/loadIncoming').then(()=>{
this.callBlockingEnabled = this.$store.state.callBlocking.incomingEnabled;
this.listLoading = false;
}).catch((err)=>{
console.log(err);
this.listLoading = false;
});
},
components: {
@ -58,7 +66,12 @@
QList,
QItem,
QItemMain,
QCardMain
QCardMain,
QIcon,
QCardTitle,
Dialog,
QInnerLoading,
QSpinnerGears
},
computed: {
numbers: {
@ -76,15 +89,11 @@
disableAddForm() {
this.addFormEnabled = false;
},
saveNewNumber() {
saveNumber() {
this.listLoading = true;
this.$store.dispatch('callBlocking/addNumber', this.newNumber).then(()=>{
this.$store.dispatch('callBlocking/addNumberToIncoming', this.newNumber).then(()=>{
this.disableAddForm();
Toast.create({
html: 'Added new number to list',
color: 'white',
bgColor: '#68A44E'
});
showToast('Added new number to list');
this.listLoading = false;
}).catch((err)=>{
this.listLoading = false;
@ -92,13 +101,32 @@
});
},
toggleIncoming () {
removeNumber(index) {
var store = this.$store;
var state = this;
Dialog.create({
title: 'Remove number',
message: 'You are about to remove the number',
buttons: [
'Cancel',
{
label: 'Remove',
handler () {
state.listLoading = true;
store.dispatch('callBlocking/removeNumberFromIncoming', index).then(()=>{
state.listLoading = false;
showToast('Removed number from list');
}).catch((err)=>{
state.listLoading = false;
});
}
}
]
});
},
toggle () {
this.$store.dispatch('callBlocking/toggleIncoming', this.callBlockingEnabled).then(()=>{
Toast.create({
html: 'Call blocking for incoming calls ' + ((this.callBlockingEnabled)?'enabled':'disabled'),
color: 'white',
bgColor: '#68A44E'
});
showToast('Call blocking for incoming calls ' + ((this.callBlockingEnabled)?'enabled':'disabled'));
}).catch((err)=>{
console.log(err);
});

@ -1,5 +1,5 @@
import { Loading, Alert } from 'quasar-framework'
import { Loading, Alert, Toast } from 'quasar-framework'
export function startLoading() {
Loading.show({ delay: 0 });
@ -19,3 +19,10 @@ export function showGlobalError(message) {
setTimeout(()=>{ alert.dismiss(); }, 2000);
}
export function showToast(message) {
Toast.create({
html: message,
color: 'white',
bgColor: '#68A44E'
});
}

@ -4,7 +4,8 @@ import _ from 'lodash';
import { enableIncomingCallBlocking,
disableIncomingCallBlocking,
getIncomingCallBlocking,
addNumberToIncomingList
addNumberToIncomingList,
removeNumberFromIncomingList
} from '../api/call-blocking';
@ -57,7 +58,7 @@ export default {
});
});
},
addNumber(context, number) {
addNumberToIncoming(context, number) {
return new Promise((resolve, reject)=>{
addNumberToIncomingList(localStorage.getItem('subscriberId'), number).then(()=>{
return context.dispatch('loadIncoming');
@ -67,6 +68,17 @@ export default {
reject(err);
});
});
},
removeNumberFromIncoming(context, index) {
return new Promise((resolve, reject)=>{
removeNumberFromIncomingList(localStorage.getItem('subscriberId'), index).then(()=>{
return context.dispatch('loadIncoming');
}).then(()=>{
resolve();
}).catch((err)=>{
reject(err);
});
});
}
}
};

Loading…
Cancel
Save