summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/handlers.go27
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/install.go52
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list.go54
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list_installed.go149
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/search.go53
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/types.go47
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/uninstall.go63
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/update.go57
8 files changed, 0 insertions, 502 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/handlers.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/handlers.go
deleted file mode 100644
index b3b308a..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/handlers.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
-)
-
-func HandleRequest(conn net.Conn, req models.Request) {
- switch req.Method {
- case "themes.list":
- HandleList(conn, req)
- case "themes.listInstalled":
- HandleListInstalled(conn, req)
- case "themes.install":
- HandleInstall(conn, req)
- case "themes.uninstall":
- HandleUninstall(conn, req)
- case "themes.update":
- HandleUpdate(conn, req)
- case "themes.search":
- HandleSearch(conn, req)
- default:
- models.RespondError(conn, req.ID, fmt.Sprintf("unknown method: %s", req.Method))
- }
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/install.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/install.go
deleted file mode 100644
index 26d22ba..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/install.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func HandleInstall(conn net.Conn, req models.Request) {
- idOrName, ok := models.Get[string](req, "name")
- if !ok {
- models.RespondError(conn, req.ID, "missing or invalid 'name' parameter")
- return
- }
-
- registry, err := themes.NewRegistry()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create registry: %v", err))
- return
- }
-
- themeList, err := registry.List()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to list themes: %v", err))
- return
- }
-
- theme := themes.FindByIDOrName(idOrName, themeList)
- if theme == nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("theme not found: %s", idOrName))
- return
- }
-
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- registryThemeDir := registry.GetThemeDir(theme.SourceDir)
- if err := manager.Install(*theme, registryThemeDir); err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to install theme: %v", err))
- return
- }
-
- models.Respond(conn, req.ID, models.SuccessResult{
- Success: true,
- Message: fmt.Sprintf("theme installed: %s", theme.Name),
- })
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list.go
deleted file mode 100644
index 9564be1..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
- "strings"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func HandleList(conn net.Conn, req models.Request) {
- registry, err := themes.NewRegistry()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create registry: %v", err))
- return
- }
-
- themeList, err := registry.List()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to list themes: %v", err))
- return
- }
-
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- result := make([]ThemeInfo, len(themeList))
- for i, t := range themeList {
- installed, _ := manager.IsInstalled(t)
- info := ThemeInfo{
- ID: t.ID,
- Name: t.Name,
- Version: t.Version,
- Author: t.Author,
- Description: t.Description,
- PreviewPath: t.PreviewPath,
- SourceDir: t.SourceDir,
- Installed: installed,
- FirstParty: isFirstParty(t.Author),
- }
- addVariantsInfo(&info, t.Variants)
- result[i] = info
- }
-
- models.Respond(conn, req.ID, result)
-}
-
-func isFirstParty(author string) bool {
- return strings.EqualFold(author, "Avenge Media") || strings.EqualFold(author, "AvengeMedia")
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list_installed.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list_installed.go
deleted file mode 100644
index 49be81b..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/list_installed.go
+++ /dev/null
@@ -1,149 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func addVariantsInfo(info *ThemeInfo, variants *themes.ThemeVariants) {
- if variants == nil {
- return
- }
-
- if variants.Type == "multi" {
- if len(variants.Flavors) == 0 && len(variants.Accents) == 0 {
- return
- }
- info.HasVariants = true
- info.Variants = &VariantsInfo{
- Type: "multi",
- Flavors: make([]FlavorInfo, len(variants.Flavors)),
- Accents: make([]AccentInfo, len(variants.Accents)),
- }
- if variants.Defaults != nil {
- info.Variants.Defaults = &MultiDefaults{
- Dark: variants.Defaults.Dark,
- Light: variants.Defaults.Light,
- }
- }
- for i, f := range variants.Flavors {
- mode := ""
- switch {
- case f.Dark.Primary != "" && f.Light.Primary != "":
- mode = "both"
- case f.Dark.Primary != "":
- mode = "dark"
- case f.Light.Primary != "":
- mode = "light"
- default:
- if f.Dark.Surface != "" {
- mode = "dark"
- } else if f.Light.Surface != "" {
- mode = "light"
- }
- }
- info.Variants.Flavors[i] = FlavorInfo{ID: f.ID, Name: f.Name, Mode: mode}
- }
- for i, a := range variants.Accents {
- color := ""
- if colors, ok := a.FlavorColors["mocha"]; ok && colors.Primary != "" {
- color = colors.Primary
- } else if colors, ok := a.FlavorColors["latte"]; ok && colors.Primary != "" {
- color = colors.Primary
- } else {
- for _, c := range a.FlavorColors {
- if c.Primary != "" {
- color = c.Primary
- break
- }
- }
- }
- info.Variants.Accents[i] = AccentInfo{ID: a.ID, Name: a.Name, Color: color}
- }
- return
- }
-
- if len(variants.Options) == 0 {
- return
- }
- info.HasVariants = true
- info.Variants = &VariantsInfo{
- Default: variants.Default,
- Options: make([]VariantInfo, len(variants.Options)),
- }
- for i, v := range variants.Options {
- info.Variants.Options[i] = VariantInfo{ID: v.ID, Name: v.Name}
- }
-}
-
-func HandleListInstalled(conn net.Conn, req models.Request) {
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- installedIDs, err := manager.ListInstalled()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to list installed themes: %v", err))
- return
- }
-
- themeMap := make(map[string]themes.Theme)
- if registry, err := themes.NewRegistry(); err == nil {
- if allThemes, err := registry.List(); err == nil {
- for _, t := range allThemes {
- themeMap[t.ID] = t
- }
- }
- }
-
- result := make([]ThemeInfo, 0, len(installedIDs))
- for _, id := range installedIDs {
- if theme, ok := themeMap[id]; ok {
- hasUpdate := false
- if hasUpdates, err := manager.HasUpdates(id, theme); err == nil {
- hasUpdate = hasUpdates
- }
-
- info := ThemeInfo{
- ID: theme.ID,
- Name: theme.Name,
- Version: theme.Version,
- Author: theme.Author,
- Description: theme.Description,
- SourceDir: id,
- FirstParty: isFirstParty(theme.Author),
- HasUpdate: hasUpdate,
- }
- addVariantsInfo(&info, theme.Variants)
- result = append(result, info)
- } else {
- installed, err := manager.GetInstalledTheme(id)
- if err != nil {
- result = append(result, ThemeInfo{
- ID: id,
- Name: id,
- SourceDir: id,
- })
- continue
- }
- info := ThemeInfo{
- ID: installed.ID,
- Name: installed.Name,
- Version: installed.Version,
- Author: installed.Author,
- Description: installed.Description,
- SourceDir: id,
- FirstParty: isFirstParty(installed.Author),
- }
- addVariantsInfo(&info, installed.Variants)
- result = append(result, info)
- }
- }
-
- models.Respond(conn, req.ID, result)
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/search.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/search.go
deleted file mode 100644
index 2823fe0..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/search.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func HandleSearch(conn net.Conn, req models.Request) {
- query, ok := models.Get[string](req, "query")
- if !ok {
- models.RespondError(conn, req.ID, "missing or invalid 'query' parameter")
- return
- }
-
- registry, err := themes.NewRegistry()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create registry: %v", err))
- return
- }
-
- themeList, err := registry.List()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to list themes: %v", err))
- return
- }
-
- searchResults := themes.FuzzySearch(query, themeList)
-
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- result := make([]ThemeInfo, len(searchResults))
- for i, t := range searchResults {
- installed, _ := manager.IsInstalled(t)
- result[i] = ThemeInfo{
- ID: t.ID,
- Name: t.Name,
- Version: t.Version,
- Author: t.Author,
- Description: t.Description,
- Installed: installed,
- FirstParty: isFirstParty(t.Author),
- }
- }
-
- models.Respond(conn, req.ID, result)
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/types.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/types.go
deleted file mode 100644
index 0ad19b4..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/types.go
+++ /dev/null
@@ -1,47 +0,0 @@
-package themes
-
-type VariantInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
-}
-
-type FlavorInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Mode string `json:"mode,omitempty"`
-}
-
-type AccentInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Color string `json:"color,omitempty"`
-}
-
-type MultiDefaults struct {
- Dark map[string]string `json:"dark,omitempty"`
- Light map[string]string `json:"light,omitempty"`
-}
-
-type VariantsInfo struct {
- Type string `json:"type,omitempty"`
- Default string `json:"default,omitempty"`
- Defaults *MultiDefaults `json:"defaults,omitempty"`
- Options []VariantInfo `json:"options,omitempty"`
- Flavors []FlavorInfo `json:"flavors,omitempty"`
- Accents []AccentInfo `json:"accents,omitempty"`
-}
-
-type ThemeInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Version string `json:"version"`
- Author string `json:"author,omitempty"`
- Description string `json:"description,omitempty"`
- PreviewPath string `json:"previewPath,omitempty"`
- SourceDir string `json:"sourceDir,omitempty"`
- Installed bool `json:"installed,omitempty"`
- FirstParty bool `json:"firstParty,omitempty"`
- HasUpdate bool `json:"hasUpdate,omitempty"`
- HasVariants bool `json:"hasVariants,omitempty"`
- Variants *VariantsInfo `json:"variants,omitempty"`
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/uninstall.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/uninstall.go
deleted file mode 100644
index 9b453e4..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/uninstall.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func HandleUninstall(conn net.Conn, req models.Request) {
- idOrName, ok := models.Get[string](req, "name")
- if !ok {
- models.RespondError(conn, req.ID, "missing or invalid 'name' parameter")
- return
- }
-
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- registry, err := themes.NewRegistry()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create registry: %v", err))
- return
- }
-
- themeList, _ := registry.List()
- theme := themes.FindByIDOrName(idOrName, themeList)
-
- if theme != nil {
- installed, err := manager.IsInstalled(*theme)
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to check if theme is installed: %v", err))
- return
- }
- if !installed {
- models.RespondError(conn, req.ID, fmt.Sprintf("theme not installed: %s", idOrName))
- return
- }
- if err := manager.Uninstall(*theme); err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to uninstall theme: %v", err))
- return
- }
- models.Respond(conn, req.ID, models.SuccessResult{
- Success: true,
- Message: fmt.Sprintf("theme uninstalled: %s", theme.Name),
- })
- return
- }
-
- if err := manager.UninstallByID(idOrName); err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("theme not found: %s", idOrName))
- return
- }
-
- models.Respond(conn, req.ID, models.SuccessResult{
- Success: true,
- Message: fmt.Sprintf("theme uninstalled: %s", idOrName),
- })
-}
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/update.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/update.go
deleted file mode 100644
index fb9f81f..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/server/themes/update.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package themes
-
-import (
- "fmt"
- "net"
-
- "github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
- "github.com/AvengeMedia/DankMaterialShell/core/internal/themes"
-)
-
-func HandleUpdate(conn net.Conn, req models.Request) {
- idOrName, ok := models.Get[string](req, "name")
- if !ok {
- models.RespondError(conn, req.ID, "missing or invalid 'name' parameter")
- return
- }
-
- manager, err := themes.NewManager()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create manager: %v", err))
- return
- }
-
- registry, err := themes.NewRegistry()
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to create registry: %v", err))
- return
- }
-
- themeList, _ := registry.List()
- theme := themes.FindByIDOrName(idOrName, themeList)
-
- if theme == nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("theme not found in registry: %s", idOrName))
- return
- }
-
- installed, err := manager.IsInstalled(*theme)
- if err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to check if theme is installed: %v", err))
- return
- }
- if !installed {
- models.RespondError(conn, req.ID, fmt.Sprintf("theme not installed: %s", idOrName))
- return
- }
-
- if err := manager.Update(*theme); err != nil {
- models.RespondError(conn, req.ID, fmt.Sprintf("failed to update theme: %v", err))
- return
- }
-
- models.Respond(conn, req.ID, models.SuccessResult{
- Success: true,
- Message: fmt.Sprintf("theme updated: %s", theme.Name),
- })
-}