fix: having no wifi crashes network module
This commit is contained in:
@@ -1,26 +1,47 @@
|
||||
import { bind, Variable } from "astal";
|
||||
import AstalNetwork from "gi://AstalNetwork?version=0.1";
|
||||
|
||||
export default function NetworkModule() {
|
||||
const network = AstalNetwork.get_default()
|
||||
const wifi = network.wifi;
|
||||
const wired = network.wired
|
||||
const disconnected_label = { label: `Disconnected ⚠` };
|
||||
|
||||
const derived = Variable.derive([bind(network, "primary"), bind(wifi, "ssid"), bind(wifi, "strength")], (primary, ssid, strength) => {
|
||||
if (primary === AstalNetwork.Primary.WIRED) {
|
||||
return { label: `🖧 Wired ${wired.device.interface}` }
|
||||
}
|
||||
if (wifi.active_access_point !== null) {
|
||||
return { label: `${ssid} (${strength}%) ` }
|
||||
}
|
||||
return { label: `Disconnected ⚠` }
|
||||
})
|
||||
function create_label(
|
||||
primary: AstalNetwork.Primary,
|
||||
wired: AstalNetwork.Wired,
|
||||
wifi?: AstalNetwork.Wifi,
|
||||
) {
|
||||
if (primary === AstalNetwork.Primary.WIRED) {
|
||||
return { label: `🖧 Wired ${wired.device.interface}` };
|
||||
}
|
||||
if (!wifi) {
|
||||
return disconnected_label;
|
||||
}
|
||||
if (wifi.active_access_point !== null) {
|
||||
return { label: `${wifi.ssid} (${wifi.strength}%) ` };
|
||||
}
|
||||
return disconnected_label;
|
||||
}
|
||||
|
||||
export default function NetworkModule() {
|
||||
const network = AstalNetwork.get_default();
|
||||
const wifi = network.wifi;
|
||||
const wired = network.wired;
|
||||
|
||||
let derived;
|
||||
if (!wifi) {
|
||||
derived = Variable.derive([bind(network, "primary")], (primary) => {
|
||||
return create_label(primary, wired);
|
||||
});
|
||||
} else {
|
||||
derived = Variable.derive(
|
||||
[bind(network, "primary"), bind(wifi, "ssid"), bind(wifi, "strength")],
|
||||
(primary) => {
|
||||
return create_label(primary, wired, wifi);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<box className="status-box">
|
||||
<label
|
||||
label={derived((v) => v.label)} />
|
||||
<label label={derived((v) => v.label)} />
|
||||
</box>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user