1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-05 21:15:38 -05:00

net: fix binding loop

This commit is contained in:
bbedward
2025-12-01 08:26:15 -05:00
parent 4e66d3532e
commit 18bf3b7548

View File

@@ -439,6 +439,34 @@ Rectangle {
property var frozenNetworks: []
property bool menuOpen: false
property var sortedNetworks: {
const ssid = NetworkService.currentWifiSSID;
const networks = NetworkService.wifiNetworks;
const pins = SettingsData.wifiNetworkPins || {};
const pinnedSSID = pins["preferredWifi"];
let sorted = [...networks];
sorted.sort((a, b) => {
if (a.ssid === pinnedSSID && b.ssid !== pinnedSSID)
return -1;
if (b.ssid === pinnedSSID && a.ssid !== pinnedSSID)
return 1;
if (a.ssid === ssid)
return -1;
if (b.ssid === ssid)
return 1;
return b.signal - a.signal;
});
return sorted;
}
onSortedNetworksChanged: {
if (!menuOpen)
frozenNetworks = sortedNetworks;
}
onMenuOpenChanged: {
if (menuOpen)
frozenNetworks = sortedNetworks;
}
Column {
id: wifiColumn
@@ -468,32 +496,7 @@ Rectangle {
Repeater {
model: ScriptModel {
values: {
const ssid = NetworkService.currentWifiSSID;
const networks = NetworkService.wifiNetworks;
const pins = SettingsData.wifiNetworkPins || {};
const pinnedSSID = pins["preferredWifi"];
let sorted = [...networks];
sorted.sort((a, b) => {
// Pinned network first
if (a.ssid === pinnedSSID && b.ssid !== pinnedSSID)
return -1;
if (b.ssid === pinnedSSID && a.ssid !== pinnedSSID)
return 1;
// Then currently connected
if (a.ssid === ssid)
return -1;
if (b.ssid === ssid)
return 1;
// Then by signal strength
return b.signal - a.signal;
});
if (!wifiContent.menuOpen) {
wifiContent.frozenNetworks = sorted;
}
return wifiContent.menuOpen ? wifiContent.frozenNetworks : sorted;
}
values: wifiContent.menuOpen ? wifiContent.frozenNetworks : wifiContent.sortedNetworks
}
delegate: Rectangle {