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.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,165 @@
/* global asyncStorage, Promise, TaskRunner */
/* exported SilentSms */
'use strict';
var SilentSms = (function () {
var NO_ALARM_ID = -1;
// The maximum amount of time that the SmsManager waits for a message before
// disabling automatically the silent mode is five minutes.
var SERVICE_TIMEOUT = 5 * 60 * 1000;
var taskQueue;
function init() {
taskQueue = new TaskRunner();
if (!window.navigator.mozSetMessageHandler) {
// bailout if we're in Firefox
return;
}
// Msg from Usage (activation / deactivation)
window.navigator.mozSetMessageHandler('connection',
function onConnected(request) {
if (request.keyword !== 'costcontrolSmsQuery') {
return;
}
var port = request.port;
port.onmessage = function onReceivedMessage(evt) {
var data = evt.data;
switch (data.action) {
case 'enable':
taskQueue.push(function() {
return SilentSms.enableSilentModeFor(data.smsNumbers, data.type)
.then(updateUsageSilentSms)
.then(port.postMessage.bind(port, 'silentSMSEnabled'));
});
break;
case 'disable':
taskQueue.push(function() {
return SilentSms.disableSilentModeFor(data.type)
.then(updateUsageSilentSms)
.then(port.postMessage.bind(port, 'silentSMSDisabled'));
});
break;
}
};
}
);
// Deactivated silentSms mode by alarm
window.navigator.mozSetMessageHandler('alarm', function _onAlarm(alarm) {
if (alarm.data.alarmType === 'silentSmsTimeout') {
SilentSms.disableSilentModeFor(alarm.data.type)
.then(updateUsageSilentSms);
}
});
}
function getUsageSilentSms() {
return new Promise(function(resolve, reject) {
asyncStorage.getItem('usageSilentSms', function(usageSilentSms) {
resolve(usageSilentSms || {});
});
});
}
function removeAlarmTimeout(alarmId) {
// There is already an alarm, remove it
if (alarmId && alarmId !== NO_ALARM_ID) {
navigator.mozAlarms.remove(alarmId);
}
}
function addAlarmTimeout(type, delay) {
return new Promise(function doEnablingSilentMode(resolve, reject) {
var date = new Date();
date.setTime(date.getTime() + delay);
var request = navigator.mozAlarms.add(date, 'ignoreTimezone',
{alarmType: 'silentSmsTimeout',
type: type });
request.onsuccess = function _alarmSet(evt) {
var alarmId = evt.target.result;
resolve(alarmId);
};
request.onerror = function _onError() {
var errorMsg = 'Failed to set timeout for ' + type + 'request';
reject(new Error(errorMsg));
};
});
}
// The enabling silentMode process consist on two steps:
// 1. Enabling silentMode for the provided number
// 2. Activating alarm for TimeOut
function enableSilentModeFor(smsNumbers, type) {
function _removeAlarmTimeout(usageSilentSms) {
if (usageSilentSms && usageSilentSms[type] &&
usageSilentSms[type].alarmId !== NO_ALARM_ID) {
removeAlarmTimeout(usageSilentSms[type].alarmId);
}
}
function handleErrorAddingAlarm(error) {
console.error(error.toString());
return NO_ALARM_ID;
}
return getUsageSilentSms().then(function(usageSilentSms) {
function refreshUsageSilentSms(alarmId) {
usageSilentSms[type] = {
smsNumbers: smsNumbers,
alarmId: alarmId
};
return usageSilentSms;
}
_removeAlarmTimeout(usageSilentSms);
return addAlarmTimeout(type, SERVICE_TIMEOUT)
.catch(handleErrorAddingAlarm)
.then(refreshUsageSilentSms);
});
}
function disableSilentModeFor(type) {
return getUsageSilentSms().then(function(usageSilentSms) {
if (usageSilentSms && usageSilentSms[type] &&
usageSilentSms[type].alarmId !== NO_ALARM_ID) {
removeAlarmTimeout(usageSilentSms[type].alarmId);
}
usageSilentSms[type] = null;
return usageSilentSms;
});
}
function updateUsageSilentSms(usageSilentSms) {
usageSilentSms.smsIndex = getIndex(usageSilentSms);
asyncStorage.setItem('usageSilentSms', usageSilentSms);
}
function getIndex(usageSilentSms) {
var newIndex = [];
Object.keys(usageSilentSms).forEach(function(silentRequest) {
var silentSmsRequest = usageSilentSms[silentRequest];
if (silentSmsRequest && silentSmsRequest.hasOwnProperty('smsNumbers')) {
newIndex = newIndex.concat(silentSmsRequest.smsNumbers);
}
});
return newIndex;
}
function checkSilentModeFor(smsNumber) {
return taskQueue.push(function() {
function checkSilentMode(usageSilentSms) {
return usageSilentSms && usageSilentSms.smsIndex &&
usageSilentSms.smsIndex.indexOf(smsNumber) !== -1;
}
return getUsageSilentSms().then(checkSilentMode);
});
}
return {
init: init,
enableSilentModeFor: enableSilentModeFor,
disableSilentModeFor: disableSilentModeFor,
checkSilentModeFor: checkSilentModeFor
};
}());