summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go
new file mode 100644
index 0000000..5b44121
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go
@@ -0,0 +1,42 @@
+package geolocation
+
+import "github.com/AvengeMedia/DankMaterialShell/core/internal/log"
+
+func NewClient() Client {
+ geoclueClient, err := newGeoClueClient()
+ if err != nil {
+ log.Warnf("GeoClue2 unavailable: %v", err)
+ return newSeededIpClient()
+ }
+
+ loc, _ := geoclueClient.GetLocation()
+ if loc.Latitude != 0 || loc.Longitude != 0 {
+ log.Info("Using GeoClue2 location")
+ return geoclueClient
+ }
+
+ log.Info("GeoClue2 has no fix yet, seeding with IP location")
+ ipLoc, err := fetchIPLocation()
+ if err != nil {
+ log.Warnf("IP location seed failed: %v", err)
+ return geoclueClient
+ }
+
+ log.Info("Seeded GeoClue2 with IP location")
+ geoclueClient.SeedLocation(Location{Latitude: ipLoc.Latitude, Longitude: ipLoc.Longitude})
+ return geoclueClient
+}
+
+func newSeededIpClient() *IpClient {
+ client := newIpClient()
+ ipLoc, err := fetchIPLocation()
+ if err != nil {
+ log.Warnf("IP location also failed: %v", err)
+ return client
+ }
+
+ log.Info("Using IP location")
+ client.currLocation.Latitude = ipLoc.Latitude
+ client.currLocation.Longitude = ipLoc.Longitude
+ return client
+}