mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-27 06:52:50 -05:00
dropdown: improve perf + add fuzzy search to printers
This commit is contained in:
@@ -2,6 +2,8 @@ package cups
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -156,9 +158,42 @@ func (m *Manager) PurgeJobs(printerName string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func resolveIPFromURI(uri string) string {
|
||||
parsed, err := url.Parse(uri)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
host := parsed.Hostname()
|
||||
if host == "" {
|
||||
return ""
|
||||
}
|
||||
if ip := net.ParseIP(host); ip != nil {
|
||||
return ip.String()
|
||||
}
|
||||
addrs, err := net.LookupIP(host)
|
||||
if err != nil || len(addrs) == 0 {
|
||||
return ""
|
||||
}
|
||||
for _, addr := range addrs {
|
||||
if v4 := addr.To4(); v4 != nil {
|
||||
return v4.String()
|
||||
}
|
||||
}
|
||||
return addrs[0].String()
|
||||
}
|
||||
|
||||
func (m *Manager) GetDevices() ([]Device, error) {
|
||||
if m.pkHelper != nil {
|
||||
return m.pkHelper.DevicesGet(10, 0, nil, nil)
|
||||
devices, err := m.pkHelper.DevicesGet(10, 0, nil, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for i := range devices {
|
||||
if devices[i].Class == "network" {
|
||||
devices[i].IP = resolveIPFromURI(devices[i].URI)
|
||||
}
|
||||
}
|
||||
return devices, nil
|
||||
}
|
||||
|
||||
deviceAttrs, err := m.client.GetDevices()
|
||||
@@ -176,6 +211,9 @@ func (m *Manager) GetDevices() ([]Device, error) {
|
||||
ID: getStringAttr(attrs, "device-id"),
|
||||
Location: getStringAttr(attrs, "device-location"),
|
||||
}
|
||||
if device.Class == "network" {
|
||||
device.IP = resolveIPFromURI(uri)
|
||||
}
|
||||
devices = append(devices, device)
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ type Device struct {
|
||||
MakeModel string `json:"makeModel"`
|
||||
ID string `json:"id"`
|
||||
Location string `json:"location"`
|
||||
IP string `json:"ip,omitempty"`
|
||||
}
|
||||
|
||||
type PPD struct {
|
||||
|
||||
Reference in New Issue
Block a user