You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc-ui/src/api/call-blocking.js

221 lines
6.0 KiB

import _ from 'lodash'
import {
enableBlockIn,
disableBlockIn,
getPreferences,
addToBlockInList,
editBlockInList,
removeFromBlockInList,
enableBlockOut,
disableBlockOut,
addToBlockOutList,
editBlockOutList,
removeFromBlockOutList,
enablePrivacy,
disablePrivacy
} from './subscriber'
import { httpApi } from './common'
export function enableIncomingCallBlocking (id) {
return enableBlockIn(id)
}
export function disableIncomingCallBlocking (id) {
return disableBlockIn(id)
}
export function getIncomingCallBlocking (id) {
return new Promise((resolve, reject) => {
getPreferences(id).then((result) => {
resolve({
enabled: result.block_in_mode,
list: result.block_in_list,
blockAnonymous: result.block_in_clir
})
}).catch((err) => {
reject(err)
})
})
}
export function addNumberToIncomingList (id, number) {
return new Promise((resolve, reject) => {
if (_.isEmpty(number)) {
reject(new Error('Number may not be empty'))
} else {
addToBlockInList(id, number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
}
})
}
export function editNumberFromIncomingList (id, index, number) {
return new Promise((resolve, reject) => {
editBlockInList(id, index, number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function removeNumberFromIncomingList (id, index) {
return new Promise((resolve, reject) => {
removeFromBlockInList(id, index).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function enableOutgoingCallBlocking (id) {
return enableBlockOut(id)
}
export function disableOutgoingCallBlocking (id) {
return disableBlockOut(id)
}
export function getOutgoingCallBlocking (id) {
return new Promise((resolve, reject) => {
getPreferences(id).then((result) => {
resolve({
enabled: result.block_out_mode,
list: result.block_out_list
})
}).catch((err) => {
reject(err)
})
})
}
export function addNumberToOutgoingList (id, number) {
return new Promise((resolve, reject) => {
if (_.isEmpty(number)) {
reject(new Error('Number may not be empty'))
} else {
addToBlockOutList(id, number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
}
})
}
export function editNumberFromOutgoingList (id, index, number) {
return new Promise((resolve, reject) => {
editBlockOutList(id, index, number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function removeNumberFromOutgoingList (id, index) {
return new Promise((resolve, reject) => {
removeFromBlockOutList(id, index).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
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(result.clir)
}).catch((err) => {
reject(err)
})
})
}
export function removeNumberFromList (id, field, value) {
return new Promise((resolve, reject) => {
Promise.resolve().then(() => {
return getPreferences(id)
}).then((result) => {
const prefs = _.cloneDeep(result)
delete prefs._links
prefs[field] = _.get(prefs, field, []).filter((number) => {
return number !== value
})
return httpApi.put('api/subscriberpreferences/' + id, prefs)
}).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function removeFromIncomingListByNumber (id, number) {
return new Promise((resolve, reject) => {
removeNumberFromList(id, 'block_in_list', number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function removeFromOutgoingListByNumber (id, number) {
return new Promise((resolve, reject) => {
removeNumberFromList(id, 'block_out_list', number).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}
export function toggleNumberInBothLists (options) {
return new Promise((resolve, reject) => {
Promise.resolve().then(() => {
return getPreferences(options.id)
}).then((result) => {
const prefs = _.cloneDeep(result)
delete prefs._links
prefs.block_in_list = _.get(prefs, 'block_in_list', [])
prefs.block_out_list = _.get(prefs, 'block_out_list', [])
if (options.block_in_list === 'add') {
prefs.block_in_list = [options.number].concat(prefs.block_in_list)
} else if (options.block_in_list === 'remove') {
prefs.block_in_list = prefs.block_in_list.filter((number) => {
return number !== options.number
})
}
if (options.block_out_list === 'add') {
prefs.block_out_list = [options.number].concat(prefs.block_out_list)
} else if (options.block_out_list === 'remove') {
prefs.block_out_list = prefs.block_out_list.filter((number) => {
return number !== options.number
})
}
return httpApi.put('api/subscriberpreferences/' + options.id, prefs)
}).then(() => {
resolve()
}).catch((err) => {
reject(err)
})
})
}