VulpesOS/assets/webapps/settings.gaiamobile.org/js/panels/carrier/carrier.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

26 lines
No EOL
6 KiB
JavaScript

define(['require','shared/lazy_loader'],function(require){'use strict';var LazyLoader=require('shared/lazy_loader');var Carrier=(function(){var DATA_KEY='ril.data.enabled';var DATA_ROAMING_KEY='ril.data.roaming_enabled';var _settings;var _mobileConnections;var _iccManager;var _mobileConnection=null;var _restartingDataConnection=false;var _elements={detailHeader:document.querySelector('#carrier-detail gaia-header h1'),carrierInfo:document.querySelector('#carrier .carrier-info'),advancedSettings:document.querySelector('#carrier .carrier-advancedSettings'),advancedSettingsList:document.querySelectorAll('#carrier .carrier-advancedSettings li'),simSettings:document.querySelector('#carrier .carrier-simSettings'),dataToggle:document.querySelector('#menuItem-enableDataCall gaia-switch'),dataRoamingToggle:document.querySelector('#menuItem-enableDataRoaming gaia-switch'),desc:document.getElementById('dataNetwork-desc')};function cs_init(){_settings=window.navigator.mozSettings;_mobileConnections=window.navigator.mozMobileConnections;_iccManager=window.navigator.mozIccManager;if(!_settings||!_mobileConnections||!_iccManager){return;}
_mobileConnection=_mobileConnections[DsdsSettings.getIccCardIndexForCellAndDataSettings()];if(!_mobileConnection){return;}
cs_showCarrierName();cs_initIccsUI();cs_initDataToggles();window.addEventListener('panelready',function(e){_mobileConnection=_mobileConnections[DsdsSettings.getIccCardIndexForCellAndDataSettings()];if(!_mobileConnection){return;}
var currentHash=e.detail.current;if(currentHash==='#carrier'){cs_showCarrierName();return;}else if(currentHash==='#carrier-detail'){document.l10n.setAttributes(_elements.detailHeader,'simSettingsWithIndex',{index:DsdsSettings.getIccCardIndexForCellAndDataSettings()+1});}
if(!currentHash.startsWith('#carrier-')){return;}});}
function cs_initIccsUI(){var isMultiSim=DsdsSettings.getNumberOfIccSlots()>1;if(isMultiSim){LazyLoader.load(['/js/panels/carrier/carrier_iccs.js'],function(){IccHandlerForCarrierSettings.init();});}
_elements.carrierInfo.hidden=isMultiSim;_elements.advancedSettings.hidden=isMultiSim;_elements.simSettings.hidden=!isMultiSim;}
function cs_initDataToggles(){function updateDataRoamingToggle(dataEnabled){if(dataEnabled){_elements.dataRoamingToggle.disabled=false;}else{_elements.dataRoamingToggle.disabled=true;_elements.dataRoamingToggle.checked=false;_elements.dataRoamingToggle.dispatchEvent(new Event('change'));}}
function getDataEnabled(){return new Promise(function(resolve,reject){var transaction=_settings.createLock();var req=transaction.get(DATA_KEY);req.onsuccess=function(){resolve(req.result[DATA_KEY]);};req.onerror=function(){resolve(false);};});}
var isSimCardInserted=Array.prototype.some.call(navigator.mozMobileConnections,function(connection){return connection.iccId;});if(!isSimCardInserted){_elements.dataToggle.disabled=true;_elements.dataRoamingToggle.disabled=true;Array.prototype.forEach.call(_elements.advancedSettingsList,(element)=>{element.setAttribute('aria-disabled',true);});}
getDataEnabled().then(function(dataEnabled){dataEnabled=isSimCardInserted&&dataEnabled;updateDataRoamingToggle(dataEnabled);});_settings.addObserver(DATA_KEY,function observerCb(event){_elements.dataToggle.checked=event.settingValue;if(_restartingDataConnection){return;}
updateDataRoamingToggle(event.settingValue);});cs_initWarning(DATA_KEY,_elements.dataToggle,isSimCardInserted,'dataConnection-warning-head','dataConnection-warning-message');cs_initWarning(DATA_ROAMING_KEY,_elements.dataRoamingToggle,isSimCardInserted,'dataRoaming-warning-head','dataRoaming-warning-message');}
function cs_showCarrierName(){if(DsdsSettings.getNumberOfIccSlots()>1){return;}
var iccCard=_iccManager.getIccById(_mobileConnection.iccId);var network=_mobileConnection.voice.network;var iccInfo=iccCard&&iccCard.iccInfo;var carrier=network?(network.shortName||network.longName):null;if(carrier&&iccInfo&&iccInfo.isDisplaySpnRequired&&iccInfo.spn){if(iccInfo.isDisplayNetworkNameRequired&&carrier!==iccInfo.spn){carrier=carrier+' '+iccInfo.spn;}else{carrier=iccInfo.spn;}}
if(iccCard){_elements.desc.textContent=carrier;}else{_elements.desc.setAttribute('data-l10n-id','noSimCard');}}
function cs_initWarning(settingKey,input,isSimCardInserted,titleL10nId,messageL10nId){var warningDialogEnabledKey=settingKey+'.warningDialog.enabled';function getWarningEnabled(callback){var request=_settings.createLock().get(warningDialogEnabledKey);request.onsuccess=function onSuccessHandler(){var warningEnabled=request.result[warningDialogEnabledKey];if(warningEnabled===null){warningEnabled=true;}
if(callback){callback(warningEnabled);}};}
function setState(state){var cset={};cset[settingKey]=!!state;_settings.createLock().set(cset);}
function getState(callback){var request=_settings.createLock().get(settingKey);request.onsuccess=function onSuccessHandler(){if(callback){callback(request.result[settingKey]);}};}
function setWarningDialogState(state){var cset={};cset[warningDialogEnabledKey]=!!state;_settings.createLock().set(cset);}
function onSubmit(){setWarningDialogState(false);setState(true);input.checked=true;}
function onReset(){setWarningDialogState(true);setState(false);input.checked=false;}
getState(function(enabled){input.checked=isSimCardInserted&&enabled;input.addEventListener('change',function(){var enabled=this.checked;getWarningEnabled(function getWarningEnabledCb(warningEnabled){if(warningEnabled){if(enabled){require(['modules/dialog_service'],function(DialogService){DialogService.confirm(messageL10nId,{title:titleL10nId,submitButton:'turnOn',cancelButton:'notNow'}).then(function(result){var type=result.type;if(type==='submit'){onSubmit();}else{onReset();}});});}}else{setState(enabled);}});});});getWarningEnabled(function getWarningEnabledCb(warningEnabled){if(warningEnabled){var request=_settings.createLock().get(settingKey);request.onsuccess=function onSuccessCb(){var enabled=false;if(request.result[settingKey]!==undefined){enabled=request.result[settingKey];}
if(enabled){setWarningDialogState(false);}};}});}
return{init:cs_init};})();return Carrier;});