diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-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/server/browser')
3 files changed, 76 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/handlers.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/handlers.go new file mode 100644 index 0000000..0b4159a --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/handlers.go @@ -0,0 +1,22 @@ +package browser + +import ( + "net" + + "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models" +) + +func HandleRequest(conn net.Conn, req models.Request, manager *Manager) { + switch req.Method { + case "browser.open": + url, ok := models.Get[string](req, "url") + if !ok { + models.RespondError(conn, req.ID, "invalid url parameter") + return + } + manager.RequestOpen(url) + models.Respond(conn, req.ID, "ok") + default: + models.RespondError(conn, req.ID, "unknown method") + } +} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/manager.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/manager.go new file mode 100644 index 0000000..5306759 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/manager.go @@ -0,0 +1,49 @@ +package browser + +import ( + "sync" + + "github.com/AvengeMedia/DankMaterialShell/core/pkg/syncmap" +) + +type Manager struct { + subscribers syncmap.Map[string, chan OpenEvent] + closeOnce sync.Once +} + +func NewManager() *Manager { + return &Manager{} +} + +func (m *Manager) Subscribe(id string) chan OpenEvent { + ch := make(chan OpenEvent, 16) + m.subscribers.Store(id, ch) + return ch +} + +func (m *Manager) Unsubscribe(id string) { + if val, ok := m.subscribers.LoadAndDelete(id); ok { + close(val) + } +} + +func (m *Manager) RequestOpen(url string) { + event := OpenEvent{URL: url} + m.subscribers.Range(func(key string, ch chan OpenEvent) bool { + select { + case ch <- event: + default: + } + return true + }) +} + +func (m *Manager) Close() { + m.closeOnce.Do(func() { + m.subscribers.Range(func(key string, ch chan OpenEvent) bool { + close(ch) + m.subscribers.Delete(key) + return true + }) + }) +} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/models.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/models.go new file mode 100644 index 0000000..fc63519 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/browser/models.go @@ -0,0 +1,5 @@ +package browser + +type OpenEvent struct { + URL string `json:"url"` +} |