import { BluetoothDevice } from "types/service/bluetooth"; const connectedControls = (dev: BluetoothDevice, connectedDevices: BluetoothDevice[]) => { if (!connectedDevices.includes(dev.address)) { return Widget.Box({}); } return Widget.Box({ vpack: "start", class_name: "bluetooth-controls", children: [ Widget.Button({ class_name: "menu-icon-button unpair bluetooth", child: Widget.Label({ tooltip_text: dev.paired ? "Unpair" : "Pair", class_name: "menu-icon-button-label unpair bluetooth txt-icon", label: dev.paired ? "" : "", }), on_primary_click: () => Utils.execAsync([ "bash", "-c", `bluetoothctl ${dev.paired ? "unpair" : "pair"} ${dev.address}`, ]).catch((err) => console.error( `bluetoothctl ${dev.paired ? "unpair" : "pair"} ${dev.address}`, err, ), ), }), Widget.Button({ class_name: "menu-icon-button disconnect bluetooth", child: Widget.Label({ tooltip_text: dev.connected ? "Disconnect" : "Connect", class_name: "menu-icon-button-label disconnect bluetooth txt-icon", label: dev.connected ? "󱘖" : "", }), on_primary_click: () => dev.setConnection(!dev.connected), }), Widget.Button({ class_name: "menu-icon-button untrust bluetooth", child: Widget.Label({ tooltip_text: dev.trusted ? "Untrust" : "Trust", class_name: "menu-icon-button-label untrust bluetooth txt-icon", label: dev.trusted ? "" : "󱖡", }), on_primary_click: () => Utils.execAsync([ "bash", "-c", `bluetoothctl ${dev.trusted ? "untrust" : "trust"} ${dev.address}`, ]).catch((err) => console.error( `bluetoothctl ${dev.trusted ? "untrust" : "trust"} ${dev.address}`, err, ), ), }), Widget.Button({ class_name: "menu-icon-button delete bluetooth", child: Widget.Label({ tooltip_text: "Forget", class_name: "menu-icon-button-label delete bluetooth txt-icon", label: "󰆴", }), on_primary_click: () => { Utils.execAsync([ "bash", "-c", `bluetoothctl remove ${dev.address}`, ]).catch((err) => console.error("Bluetooth Remove", err)); }, }), ], }); }; export { connectedControls };