Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
89 lines
3.1 KiB
JavaScript
Executable file
89 lines
3.1 KiB
JavaScript
Executable file
define(function(require) {
|
|
'use strict';
|
|
|
|
var DialogPanel = require('modules/dialog_panel');
|
|
var WifiWps = require('panels/wifi_wps/wifi_wps');
|
|
|
|
return function ctor_wpsWifi() {
|
|
var wifiWps = WifiWps();
|
|
var elements = {};
|
|
|
|
return DialogPanel({
|
|
onInit: function(panel) {
|
|
elements.panel = panel;
|
|
elements.submitWpsButton = panel.querySelector('button[type=submit]');
|
|
elements.apSelectionArea = panel.querySelector('.wifi-wps-pin-aps');
|
|
elements.apSelect = elements.apSelectionArea.querySelector('select');
|
|
elements.pinItem = panel.querySelector('.wifi-wps-pin-area');
|
|
elements.pinDesc = elements.pinItem.querySelector('p');
|
|
elements.pinInput = elements.pinItem.querySelector('input');
|
|
elements.wpsMethodRadios = panel.querySelectorAll('gaia-radio');
|
|
|
|
// Check validWpsPin each time when typing
|
|
elements.pinInput.oninput = function() {
|
|
elements.submitWpsButton.disabled =
|
|
!wifiWps._isValidWpsPin(elements.pinInput.value);
|
|
};
|
|
|
|
for (var i = 0; i < elements.wpsMethodRadios.length; i++) {
|
|
elements.wpsMethodRadios[i].onchange = this._onWpsMethodChange;
|
|
}
|
|
this._onWpsMethodChange();
|
|
},
|
|
onBeforeShow: function(panel, options) {
|
|
this._cleanupApList();
|
|
options.wpsAvailableNetworks().then((networks) => {
|
|
this._updateApList(networks);
|
|
});
|
|
},
|
|
onSubmit: function() {
|
|
var selectedAp = elements.apSelect.options[
|
|
elements.apSelect.selectedIndex].value;
|
|
var selectedMethod = elements.panel.querySelector(
|
|
'gaia-radio[checked]').value;
|
|
var pin = elements.pinInput.value;
|
|
|
|
return Promise.resolve({
|
|
selectedAp: selectedAp,
|
|
selectedMethod: selectedMethod,
|
|
pin: pin
|
|
});
|
|
},
|
|
_cleanupApList: function() {
|
|
var apSelect = elements.apSelect;
|
|
while (apSelect.hasChildNodes()) {
|
|
apSelect.removeChild(apSelect.firstChild);
|
|
}
|
|
},
|
|
_updateApList: function(wpsAvailableNetworks) {
|
|
// Add the first option
|
|
var option = document.createElement('option');
|
|
option.setAttribute('data-l10n-id', 'wpsAnyAp');
|
|
option.value = 'any';
|
|
elements.apSelect.appendChild(option);
|
|
|
|
// Add the other networks
|
|
for (var i = 0; i < wpsAvailableNetworks.length; i++) {
|
|
option = document.createElement('option');
|
|
option.textContent = wpsAvailableNetworks[i].ssid;
|
|
option.value = wpsAvailableNetworks[i].bssid;
|
|
elements.apSelect.appendChild(option);
|
|
}
|
|
},
|
|
_onWpsMethodChange: function() {
|
|
var method = elements.panel.querySelector(
|
|
'gaia-radio[checked]').value;
|
|
|
|
if (method === 'apPin') {
|
|
elements.submitWpsButton.disabled =
|
|
!wifiWps._isValidWpsPin(elements.pinInput.value);
|
|
elements.pinItem.hidden = false;
|
|
} else {
|
|
elements.submitWpsButton.disabled = false;
|
|
elements.pinItem.hidden = true;
|
|
}
|
|
elements.apSelectionArea.hidden = method === 'pbc';
|
|
}
|
|
});
|
|
};
|
|
});
|