luci-mod-network: wifi join: allow reclaiming empty wwan networks
authorJo-Philipp Wich <jo@mein.io>
Fri, 21 Feb 2020 21:12:31 +0000 (22:12 +0100)
committerJo-Philipp Wich <jo@mein.io>
Fri, 21 Feb 2020 21:20:07 +0000 (22:20 +0100)
Fixes: #3660
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 48e18fb8acfdc661793582e4a907b10b9e8d0d43)

modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js

index c8d8910cfeedded811f2994fd97648239ae93e13..dc4fdca31be7d2400b7e1387446818b06b9022b8 100644 (file)
@@ -1893,6 +1893,15 @@ return L.view.extend({
                            is_psk = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'psk' || a == 'sae' })),
                            replace, passphrase, name, bssid, zone;
 
+                       var nameUsed = function(name) {
+                               var s = uci.get('network', name);
+                               if (s != null && s['.type'] != 'interface')
+                                       return true;
+
+                               var net = (s != null) ? network.instantiateNetwork(name) : null;
+                               return (net != null && !net.isEmpty());
+                       };
+
                        s2.render = function() {
                                return Promise.all([
                                        {},
@@ -1907,13 +1916,13 @@ return L.view.extend({
                        name.default = 'wwan';
                        name.rmempty = false;
                        name.validate = function(section_id, value) {
-                               if (uci.get('network', value))
+                               if (nameUsed(value))
                                        return _('The network name is already used');
 
                                return true;
                        };
 
-                       for (var i = 2; uci.get('network', name.default); i++)
+                       for (var i = 2; nameUsed(name.default); i++)
                                name.default = 'wwan%d'.format(i);
 
                        if (is_wep || is_psk) {