VulpesOS/assets/webapps/system.gaiamobile.org/js/carrier_info_notifier.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

85 lines
2.6 KiB
JavaScript

/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
'use strict';
/* global ModalDialog */
/* global NotificationScreen */
(function(exports) {
var CarrierInfoNotifier = {
_sound: 'style/notifications/ringtones/notifier_firefox.opus',
// A random starting point
// that is unlikely to be used by other notifications
_notificationId: 6000 + Math.floor(Math.random() * 999),
start: function() {
// CDMA record information
navigator.mozSetMessageHandler('cdma-info-rec-received',
this.showCDMA.bind(this));
},
showCDMA: function cin_showCDMA(message) {
if (message.display) {
this.show(message.display, 'cdma-record-info');
}
if (message.extendedDisplay) {
var text = message.extendedDisplay.records.map(function(elem) {
return elem.content;
}).join(' ');
this.show(text, 'cdma-record-info');
}
},
show: function cin_show(message, title) {
var showDialog = function cin_showDialog() {
ModalDialog.showWithPseudoEvent({
title: title,
text: { raw: message },
type: 'alert'
});
};
// If we are not inside the lockscreen, show the dialog
// immediately, dispatch an event to hide
if (!window.Service.query('locked')) {
this.dispatchEvent('emergencyalert');
this.playNotification();
showDialog();
return;
}
// If we are on the lock screen then create a notification
// that invokes the dialog
var notificationId = ++this._notificationId;
var notification = NotificationScreen.addNotification({
id: notificationId,
title: title,
text: message
});
notification.addEventListener('tap', function showDialogAndDismiss() {
showDialog();
NotificationScreen.removeNotification(notificationId);
});
},
playNotification: function cin_playNotification() {
var ringtonePlayer = new Audio();
ringtonePlayer.src = this._sound;
ringtonePlayer.mozAudioChannelType = 'notification';
ringtonePlayer.play();
window.setTimeout(function smsRingtoneEnder() {
ringtonePlayer.pause();
ringtonePlayer.src = '';
}, 2000);
},
dispatchEvent: function cin_dispatchEvent(name, detail) {
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(name, true, true, detail);
window.dispatchEvent(evt);
}
};
exports.CarrierInfoNotifier = CarrierInfoNotifier;
}(window));