VulpesOS/gaia/shared/js/dialer/voicemail.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

73 lines
2.4 KiB
JavaScript
Executable file

'use strict';
/* global Promise */
(function(exports) {
/**
* This Voicemail module provides an easy way to identify if any given number
* is voicemail number or not. Voicemail number could be stored in mozSettings
* under key of 'ril.iccInfo.mbdn' or in navigator.mozVoicemail. User of this
* module don't need to know where voicemail number stores, just query
* voicemail number by invoking Voicemail.check()
*
* @example
* Voicemail.check('123', cardIndex).then(function(isVoicemailNumber) {
* // do something based on value of isVoicemailNumber
* });
*
*/
var Voicemail = {
/**
* Query if a number is voicemail number or not
*
* @param {String} number - Number in query
* @param {Number} [cardIndex] - SIM card index in query, 0 if not specified
* @returns {Promise} - A Promise that resolves as true if number is
* voicemail number, false otherwise.
*/
check: function vm_check(number, cardIndex) {
return new Promise(function(resolve, reject) {
if (!number) {
resolve(false);
return;
}
var serviceId = cardIndex;
// check the voicemail number if the number is in the sim card
var voicemail = navigator.mozVoicemail;
if (voicemail) {
var voicemailNumber = voicemail.getNumber(serviceId);
if (voicemailNumber === number) {
resolve(true);
return;
}
}
// check the voicemail number with the mozSetting value
// based on /shared/resources/apn.json
var settings = navigator.mozSettings;
var req = settings.createLock().get('ril.iccInfo.mbdn');
req.onsuccess = function getVoicemailNumber() {
var isVoicemailNumber = false;
var voicemailNumbers = req.result['ril.iccInfo.mbdn'];
var voicemailNumber;
if (typeof voicemailNumbers === 'string') {
voicemailNumber = voicemailNumbers;
} else {
voicemailNumber = voicemailNumbers && voicemailNumbers[serviceId];
}
if (voicemailNumber === number) {
isVoicemailNumber = true;
}
resolve(isVoicemailNumber);
};
req.onerror = function getVoicemailNumberError() {
resolve(false);
};
});
}
};
exports.Voicemail = Voicemail;
}(window));