VulpesOS/gaia/shared/js/dialer/telephony_messages.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

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');
}
},
};