Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
73 lines
2.4 KiB
JavaScript
Executable file
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));
|