Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
134 lines
4.5 KiB
JavaScript
Executable file
134 lines
4.5 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
/* globals ConfirmDialog, LazyLoader */
|
|
/* exported TelephonyMessages */
|
|
|
|
var TelephonyMessages = {
|
|
/**
|
|
* Constants for what message to display when we get a bad number error.
|
|
* Depends on the situation.
|
|
*/
|
|
// Display the regular "invalid number" message, as this is a regular call.
|
|
REGULAR_CALL: 0,
|
|
// We have no network and/or no SIM, so we can only make emergency calls.
|
|
// Display the "no network" message.
|
|
NO_NETWORK: 1,
|
|
// We are making a call from an emergency call view, so calls can only be
|
|
// placed to emergency and ICE numbers. Display the "not an emergency number"
|
|
// message.
|
|
EMERGENCY_ONLY: 2,
|
|
|
|
displayMessage: function(message, number) {
|
|
var dialogTitle, dialogBody;
|
|
|
|
switch (message) {
|
|
case 'BadNumber':
|
|
dialogTitle = 'invalidNumberToDialTitle';
|
|
dialogBody = 'invalidNumberToDialMessage';
|
|
break;
|
|
case 'FlightMode':
|
|
dialogTitle = 'callAirplaneModeTitle';
|
|
dialogBody = 'callAirplaneModeMessage';
|
|
break;
|
|
case 'NoNetwork':
|
|
dialogTitle = 'emergencyDialogTitle';
|
|
dialogBody = 'emergencyDialogBodyBadNumber';
|
|
break;
|
|
case 'DeviceNotAccepted':
|
|
dialogTitle = 'emergencyDialogTitle';
|
|
dialogBody = 'emergencyDialogBodyDeviceNotAccepted';
|
|
break;
|
|
case 'UnableToCall':
|
|
dialogTitle = 'unableToCallTitle';
|
|
dialogBody = 'unableToCallMessage';
|
|
break;
|
|
case 'NumberIsBusy':
|
|
dialogTitle = 'numberIsBusyTitle';
|
|
dialogBody = 'numberIsBusyMessage';
|
|
break;
|
|
case 'FixedDialingNumbers':
|
|
dialogTitle = 'fdnIsActiveTitle';
|
|
dialogBody = 'fdnIsActiveMessage';
|
|
break;
|
|
case 'OtherConnectionInUse':
|
|
dialogTitle = 'otherConnectionInUseTitle';
|
|
dialogBody = 'otherConnectionInUseMessage';
|
|
break;
|
|
case 'OperatorDeterminedBarring':
|
|
dialogTitle = 'unableToCallTitle';
|
|
dialogBody = 'callBarredByTheOperatorMessage';
|
|
break;
|
|
case 'EmergencyCallOnly':
|
|
dialogTitle = 'emergency-call-only';
|
|
dialogBody = 'emergency-call-error';
|
|
break;
|
|
default:
|
|
console.error('Invalid message argument'); // Should never happen
|
|
return;
|
|
}
|
|
|
|
LazyLoader.load(['/shared/style/confirm.css',
|
|
'/shared/js/confirm.js',
|
|
document.getElementById('confirmation-message')],
|
|
function() {
|
|
ConfirmDialog.show(
|
|
dialogTitle,
|
|
{id: dialogBody, args: {number: number}},
|
|
{
|
|
title: 'emergencyDialogBtnOk', // Just 'ok' would be better.
|
|
callback: function() {
|
|
ConfirmDialog.hide();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
);
|
|
},
|
|
|
|
handleDisconnect: function(reason, number, emergencyOptions) {
|
|
if (reason === 'NormalCallClearing') {
|
|
return;
|
|
}
|
|
|
|
this.handleError(reason + 'Error', number, emergencyOptions);
|
|
},
|
|
|
|
handleError: function(errorName, number, emergencyOptions) {
|
|
// We ignore this error because some networks generate this with
|
|
// STK CallControl when calling Voicemail pilots (e.g. TMobile)
|
|
if (errorName === 'ModifiedDialError') {
|
|
console.log('ModifiedDialError');
|
|
return;
|
|
}
|
|
|
|
if (errorName === 'BadNumberError') {
|
|
if (emergencyOptions === this.REGULAR_CALL) {
|
|
this.displayMessage('BadNumber');
|
|
} else if (emergencyOptions === this.NO_NETWORK) {
|
|
this.displayMessage('NoNetwork');
|
|
} else if (emergencyOptions === this.EMERGENCY_ONLY) {
|
|
this.displayMessage('EmergencyCallOnly', number);
|
|
} else {
|
|
console.error('Unexpected emergency options: ' + emergencyOptions);
|
|
}
|
|
} else if (errorName === 'DeviceNotAcceptedError') {
|
|
this.displayMessage('DeviceNotAccepted');
|
|
} else if (errorName === 'RadioNotAvailable') {
|
|
this.displayMessage('FlightMode');
|
|
} else if (errorName === 'BusyError') {
|
|
this.displayMessage('NumberIsBusy');
|
|
} else if (errorName === 'FDNBlockedError' ||
|
|
errorName === 'FdnCheckFailure') {
|
|
this.displayMessage('FixedDialingNumbers', number);
|
|
} else if (errorName === 'OtherConnectionInUse') {
|
|
this.displayMessage('OtherConnectionInUse');
|
|
} else if (errorName === 'OperatorDeterminedBarringError') {
|
|
this.displayMessage('OperatorDeterminedBarring');
|
|
} else {
|
|
// If the call failed for some other reason we should still
|
|
// display something to the user. See bug 846403.
|
|
console.error('Unexpected error: ', errorName);
|
|
this.displayMessage('UnableToCall');
|
|
}
|
|
},
|
|
};
|