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

12 lines
No EOL
6.6 KiB
JavaScript

define(['require','shared/wifi_helper'],function(require){'use strict';var WifiHelper=require('shared/wifi_helper');var wifiManager=WifiHelper.getWifiManager();var WifiUtils={newExplanationItem:function(message){var li=document.createElement('li');li.className='explanation';li.setAttribute('data-l10n-id',message);return li;},newListItem:function(options){var network=options.network;var showNotInRange=options.showNotInRange||false;var onClick=options.onClick||function(){};var icon=document.createElement('aside');icon.classList.add('pack-end');icon.classList.add('wifi-icon');var level=Math.min(Math.floor(network.relSignalStrength/20),4);icon.classList.add('level-'+level);var ssid=document.createElement('span');ssid.dir='auto';ssid.textContent=network.ssid;var small=document.createElement('small');var keys=WifiHelper.getSecurity(network);var networkNotInRange=(network.known&&level===0);var hasSecurity=(keys&&keys.length);if(hasSecurity){if(showNotInRange&&networkNotInRange){small.setAttribute('data-l10n-id','notInRange');}else{document.l10n.setAttributes(small,'securedBy',{capabilities:keys.join(', ')});}
icon.classList.add('secured');}else{if(showNotInRange&&networkNotInRange){small.setAttribute('data-l10n-id','notInRange');}else{small.setAttribute('data-l10n-id','securityOpen');}}
var a=document.createElement('a');a.appendChild(ssid);a.appendChild(small);var li=document.createElement('li');li.dataset.ssid=network.ssid;li.appendChild(icon);li.appendChild(a);icon.classList.add('wifi-signal');var networkStatus=WifiHelper.getNetworkStatus(network);var kActiveStatuses=['associated','connecting','connected'];if(-1!==kActiveStatuses.indexOf(networkStatus)){li.classList.add('active');if('connected'===networkStatus){icon.classList.add('connected');}else{icon.classList.add('connecting');}
small.setAttribute('data-l10n-id','short-status-'+networkStatus);}
li.onclick=function(){onClick(network);};return li;},changeDisplay:function(panel,security){var eap=panel.querySelector('li.eap select');var identity=panel.querySelector('input[name=identity]');var password=panel.querySelector('input[name=password]');var authPhase2=panel.querySelector('li.auth-phase2 select');var certificate=panel.querySelector('li.server-certificate select');var description=panel.querySelector('li.server-certificate-description');if(security==='WEP'||security==='WPA-PSK'){identity.parentNode.style.display='none';password.parentNode.style.display='block';authPhase2.parentNode.parentNode.style.display='none';certificate.parentNode.parentNode.style.display='none';description.style.display='none';}else if(security==='WPA-EAP'){if(eap){switch(eap.value){case'SIM':identity.parentNode.style.display='none';password.parentNode.style.display='none';authPhase2.parentNode.parentNode.style.display='none';certificate.parentNode.parentNode.style.display='none';description.style.display='none';break;case'PEAP':case'TLS':case'TTLS':identity.parentNode.style.display='block';password.parentNode.style.display='block';authPhase2.parentNode.parentNode.style.display='block';certificate.parentNode.parentNode.style.display='block';description.style.display='block';break;default:break;}}}else{identity.parentNode.style.display='none';password.parentNode.style.display='none';}},initializeAuthFields:function(panel,network){var ssid=panel.querySelector('input[name=ssid]');var identity=panel.querySelector('input[name=identity]');var password=panel.querySelector('input[name=password]');var showPassword=panel.querySelector('gaia-checkbox[name=show-pwd]');var eap=panel.querySelector('li.eap select');var certificate=panel.querySelector('li.server-certificate select');var submitButton=panel.querySelector('button[type=submit]');this.loadImportedCertificateOptions(certificate);identity.value=network.identity||'';password.type='password';password.value=network.password||'';showPassword.checked=false;showPassword.onchange=function(){password.type=this.checked?'text':'password';};var checkPassword=function(){var key=WifiHelper.getKeyManagement(network);var isDisabled=!WifiHelper.isValidInput(key,password.value,identity.value,eap.value);if(ssid){isDisabled=isDisabled||!WifiHelper.isSSIDValid(ssid.value);}
submitButton.disabled=isDisabled;};eap.onchange=function(){var key=WifiHelper.getKeyManagement(network);checkPassword();WifiUtils.changeDisplay(panel,key);};if(ssid){ssid.oninput=checkPassword;}
password.oninput=checkPassword;identity.oninput=checkPassword;checkPassword();},loadImportedCertificateOptions:function(select){if(!wifiManager.getImportedCerts){return;}
var certRequest=wifiManager.getImportedCerts();certRequest.onsuccess=function(){var i;var certList=certRequest.result;var certificateList=certList.ServerCert;var originLengthOfOptions=select.options.length;for(i=0;i<originLengthOfOptions-1;i++){select.remove(1);}
for(i=0;i<certificateList.length;i++){var option=document.createElement('option');option.text=certificateList[i];option.value=certificateList[i];select.add(option,null);}};certRequest.onerror=function(){console.warn('getImportedCerts failed');};},updateNetworkSignal:function(network,networkSignal){var li=document.querySelector('li[data-ssid="'+network.ssid+'"]');var icon=li.querySelector('aside');icon.className=icon.className.replace(/level-\w*/,'');var level=Math.min(Math.floor(networkSignal/20),4);icon.classList.add('level-'+level);},getNetworkKey:function(network){if(!network){return'';}else{var key=network.ssid+'+'+WifiHelper.getSecurity(network).join('+');return key;}},updateListItemStatus:function(options){options=options||{};var listItems=options.listItems;var activeItemDOM=options.activeItemDOM;var network=options.network;var networkStatus=options.networkStatus;if(!network||!networkStatus||!listItems){console.log('Please check passing options for updateListItemStatus');return;}
var key=this.getNetworkKey(network);var listItemDOM=listItems[key];if(activeItemDOM&&activeItemDOM!=listItemDOM){activeItemDOM.classList.remove('active');activeItemDOM.querySelector('small').setAttribute('data-l10n-id','short-status-disconnected');activeItemDOM.querySelector('aside').classList.remove('connecting');activeItemDOM.querySelector('aside').classList.remove('connected');}
if(listItemDOM){listItemDOM.classList.add('active');listItemDOM.querySelector('small').setAttribute('data-l10n-id','short-status-'+networkStatus);if(networkStatus==='connecting'||networkStatus==='associated'){listItemDOM.querySelector('aside').classList.remove('connected');listItemDOM.querySelector('aside').classList.add('connecting');}else if(networkStatus==='connected'){listItemDOM.querySelector('aside').classList.remove('connecting');listItemDOM.querySelector('aside').classList.add('connected');}}}};return WifiUtils;});