73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
const network = await Service.import("network");
|
|
import { renderWAPs } from "./WirelessAPs.js";
|
|
import { renderWapStaging } from "./APStaging.js";
|
|
|
|
const Staging = Variable({});
|
|
const Connecting = Variable("");
|
|
|
|
const searchInProgress = Variable(false);
|
|
|
|
const startRotation = () => {
|
|
searchInProgress.value = true;
|
|
setTimeout(() => {
|
|
searchInProgress.value = false;
|
|
}, 5 * 1000);
|
|
};
|
|
|
|
const Wifi = () => {
|
|
return Widget.Box({
|
|
class_name: "menu-section-container wifi",
|
|
vertical: true,
|
|
children: [
|
|
Widget.Box({
|
|
class_name: "menu-label-container",
|
|
hpack: "fill",
|
|
children: [
|
|
Widget.Label({
|
|
class_name: "menu-label",
|
|
hexpand: true,
|
|
hpack: "start",
|
|
label: "Wi-Fi",
|
|
}),
|
|
Widget.Button({
|
|
vpack: "center",
|
|
hpack: "end",
|
|
class_name: "menu-icon-button search network",
|
|
on_primary_click: () => {
|
|
startRotation();
|
|
network.wifi.scan();
|
|
},
|
|
child: Widget.Icon({
|
|
class_name: searchInProgress
|
|
.bind("value")
|
|
.as((v) => (v ? "spinning" : "")),
|
|
icon: "view-refresh-symbolic",
|
|
}),
|
|
}),
|
|
],
|
|
}),
|
|
Widget.Box({
|
|
class_name: "menu-items-section",
|
|
vertical: true,
|
|
children: [
|
|
Widget.Box({
|
|
class_name: "wap-staging",
|
|
setup: (self) => {
|
|
renderWapStaging(self, network, Staging, Connecting);
|
|
},
|
|
}),
|
|
Widget.Box({
|
|
class_name: "available-waps",
|
|
vertical: true,
|
|
setup: (self) => {
|
|
renderWAPs(self, network, Staging, Connecting);
|
|
},
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
});
|
|
};
|
|
|
|
export { Wifi };
|