wifi: more proper handling of password visibility

This commit is contained in:
end-4
2025-04-03 12:29:13 +02:00
parent eb0aa91b54
commit 5c1803b754
@@ -1,6 +1,7 @@
import App from 'resource:///com/github/Aylur/ags/app.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import Network from "resource:///com/github/Aylur/ags/service/network.js";
import Variable from 'resource:///com/github/Aylur/ags/variable.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, Entry, Icon, Label, Revealer, Scrollable, Slider, Stack, Overlay } = Widget;
const { execAsync, exec } = Utils;
@@ -98,7 +99,7 @@ const NetResource = (icon, command) => {
}
const CurrentNetwork = () => {
let passwordVisible = false;
const passwordVisible = Variable(false);
let authLock = false;
let timeoutId = null;
@@ -155,8 +156,7 @@ const CurrentNetwork = () => {
label: getString('Cancel'),
hpack: 'end',
onClicked: () => {
passwordVisible = false;
authEntry.visibility = false;
passwordVisible.value = false;
networkAuth.revealChild = false;
authFailed.revealChild = false;
networkAuthSSID.label = '';
@@ -179,11 +179,14 @@ const CurrentNetwork = () => {
child: MaterialIcon('visibility', 'large'),
className: 'txt sidebar-wifinetworks-auth-visible',
onClicked: (self) => {
passwordVisible = !passwordVisible;
authEntry.visibility = passwordVisible;
self.child.label = passwordVisible ? 'visibility_off' : 'visibility';
passwordVisible.value = !passwordVisible.value;
},
setup: (self) => {
setupCursorHover(self)
self.hook(passwordVisible, (self) => {
self.child.label = passwordVisible.value ? 'visibility_off' : 'visibility';
})
},
setup: setupCursorHover,
});
const authFailed = Revealer({
revealChild: false,
@@ -208,8 +211,7 @@ const CurrentNetwork = () => {
networkAuth.revealChild = false; // Hide input if successful
authFailed.revealChild = false; // Hide failed message if successful
self.text = ''; // Empty input for retry
passwordVisible = false;
authEntry.visibility = false;
passwordVisible.value = false;
})
.catch(() => {
// Connection failed, show password input again
@@ -217,6 +219,9 @@ const CurrentNetwork = () => {
authFailed.revealChild = true;
});
},
setup: (self) => self.hook(passwordVisible, (self) => {
self.visibility = passwordVisible.value
}),
placeholderText: getString('Enter network password'),
});
const authBox = Box({
@@ -312,8 +317,7 @@ const CurrentNetwork = () => {
}
timeoutId = setTimeout(() => {
authLock = false;
passwordVisible = false;
authEntry.visibility = false;
passwordVisible.value = false;
self.revealChild = false;
authFailed.revealChild = false;
Network.wifi.state = 'activated';