mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-06 13:38:28 -04:00
core: migrate to dankgo shared go modules, embed quickshell in DMS
binary to mount at runtime, -c or DMS_SHELL_DIR overrides required to explicitly override embedded configuration
This commit is contained in:
@@ -2,13 +2,12 @@ package freedesktop
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/params"
|
||||
"github.com/AvengeMedia/dankgo/ipc/params"
|
||||
)
|
||||
|
||||
func HandleRequest(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func HandleRequest(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
switch req.Method {
|
||||
case "freedesktop.getState":
|
||||
handleGetState(conn, req, manager)
|
||||
@@ -33,11 +32,11 @@ func HandleRequest(conn net.Conn, req models.Request, manager *Manager) {
|
||||
}
|
||||
}
|
||||
|
||||
func handleGetState(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleGetState(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, manager.GetState())
|
||||
}
|
||||
|
||||
func handleSetIconFile(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetIconFile(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
iconPath, err := params.String(req.Params, "path")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -52,7 +51,7 @@ func handleSetIconFile(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "icon file set"})
|
||||
}
|
||||
|
||||
func handleSetRealName(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetRealName(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
name, err := params.String(req.Params, "name")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -67,7 +66,7 @@ func handleSetRealName(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "real name set"})
|
||||
}
|
||||
|
||||
func handleSetEmail(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetEmail(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
email, err := params.String(req.Params, "email")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -82,7 +81,7 @@ func handleSetEmail(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "email set"})
|
||||
}
|
||||
|
||||
func handleSetLanguage(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetLanguage(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
language, err := params.String(req.Params, "language")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -97,7 +96,7 @@ func handleSetLanguage(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "language set"})
|
||||
}
|
||||
|
||||
func handleSetLocation(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetLocation(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
location, err := params.String(req.Params, "location")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -112,7 +111,7 @@ func handleSetLocation(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "location set"})
|
||||
}
|
||||
|
||||
func handleGetUserIconFile(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleGetUserIconFile(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
username, err := params.String(req.Params, "username")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
@@ -128,7 +127,7 @@ func handleGetUserIconFile(conn net.Conn, req models.Request, manager *Manager)
|
||||
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Value: iconFile})
|
||||
}
|
||||
|
||||
func handleGetColorScheme(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleGetColorScheme(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
if err := manager.updateSettingsState(); err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
return
|
||||
@@ -138,7 +137,7 @@ func handleGetColorScheme(conn net.Conn, req models.Request, manager *Manager) {
|
||||
models.Respond(conn, req.ID, map[string]uint32{"colorScheme": state.Settings.ColorScheme})
|
||||
}
|
||||
|
||||
func handleSetIconTheme(conn net.Conn, req models.Request, manager *Manager) {
|
||||
func handleSetIconTheme(conn *models.Conn, req models.Request, manager *Manager) {
|
||||
iconTheme, err := params.String(req.Params, "iconTheme")
|
||||
if err != nil {
|
||||
models.RespondError(conn, req.ID, err.Error())
|
||||
|
||||
@@ -60,11 +60,12 @@ func mockGetAllAccountsProperties() *dbus.Call {
|
||||
}
|
||||
|
||||
func TestRespondError_Freedesktop(t *testing.T) {
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
models.RespondError(conn, 123, "test error")
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -73,12 +74,13 @@ func TestRespondError_Freedesktop(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRespond_Freedesktop(t *testing.T) {
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
result := models.SuccessResult{Success: true, Message: "test"}
|
||||
models.Respond(conn, 123, result)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -105,13 +107,14 @@ func TestHandleGetState(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{ID: 123, Method: "freedesktop.getState"}
|
||||
|
||||
handleGetState(conn, req, manager)
|
||||
|
||||
var resp models.Response[FreedeskState]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -130,7 +133,8 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setIconFile",
|
||||
@@ -140,7 +144,7 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
handleSetIconFile(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -163,7 +167,8 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
accountsObj: mockAccountsObj,
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setIconFile",
|
||||
@@ -175,7 +180,7 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
handleSetIconFile(conn, req, manager)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -195,7 +200,8 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setIconFile",
|
||||
@@ -207,7 +213,7 @@ func TestHandleSetIconFile(t *testing.T) {
|
||||
handleSetIconFile(conn, req, manager)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -222,7 +228,8 @@ func TestHandleSetRealName(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setRealName",
|
||||
@@ -232,7 +239,7 @@ func TestHandleSetRealName(t *testing.T) {
|
||||
handleSetRealName(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -255,7 +262,8 @@ func TestHandleSetRealName(t *testing.T) {
|
||||
accountsObj: mockAccountsObj,
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setRealName",
|
||||
@@ -267,7 +275,7 @@ func TestHandleSetRealName(t *testing.T) {
|
||||
handleSetRealName(conn, req, manager)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -285,7 +293,8 @@ func TestHandleSetEmail(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setEmail",
|
||||
@@ -295,7 +304,7 @@ func TestHandleSetEmail(t *testing.T) {
|
||||
handleSetEmail(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -318,7 +327,8 @@ func TestHandleSetEmail(t *testing.T) {
|
||||
accountsObj: mockAccountsObj,
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setEmail",
|
||||
@@ -330,7 +340,7 @@ func TestHandleSetEmail(t *testing.T) {
|
||||
handleSetEmail(conn, req, manager)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -348,7 +358,8 @@ func TestHandleSetLanguage(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setLanguage",
|
||||
@@ -358,7 +369,7 @@ func TestHandleSetLanguage(t *testing.T) {
|
||||
handleSetLanguage(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -373,7 +384,8 @@ func TestHandleSetLocation(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.setLocation",
|
||||
@@ -383,7 +395,7 @@ func TestHandleSetLocation(t *testing.T) {
|
||||
handleSetLocation(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -398,7 +410,8 @@ func TestHandleGetUserIconFile(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.getUserIconFile",
|
||||
@@ -408,7 +421,7 @@ func TestHandleGetUserIconFile(t *testing.T) {
|
||||
handleGetUserIconFile(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -425,7 +438,8 @@ func TestHandleGetUserIconFile(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.accounts.getUserIconFile",
|
||||
@@ -437,7 +451,7 @@ func TestHandleGetUserIconFile(t *testing.T) {
|
||||
handleGetUserIconFile(conn, req, manager)
|
||||
|
||||
var resp models.Response[models.SuccessResult]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -456,13 +470,14 @@ func TestHandleGetColorScheme(t *testing.T) {
|
||||
stateMutex: sync.RWMutex{},
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{ID: 123, Method: "freedesktop.settings.getColorScheme"}
|
||||
|
||||
handleGetColorScheme(conn, req, manager)
|
||||
|
||||
var resp models.Response[map[string]uint32]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -487,13 +502,14 @@ func TestHandleGetColorScheme(t *testing.T) {
|
||||
settingsObj: mockSettingsObj,
|
||||
}
|
||||
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{ID: 123, Method: "freedesktop.settings.getColorScheme"}
|
||||
|
||||
handleGetColorScheme(conn, req, manager)
|
||||
|
||||
var resp models.Response[map[string]uint32]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -515,7 +531,8 @@ func TestHandleRequest(t *testing.T) {
|
||||
}
|
||||
|
||||
t.Run("unknown method", func(t *testing.T) {
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.unknown",
|
||||
@@ -524,7 +541,7 @@ func TestHandleRequest(t *testing.T) {
|
||||
HandleRequest(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -532,7 +549,8 @@ func TestHandleRequest(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("valid method - getState", func(t *testing.T) {
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: "freedesktop.getState",
|
||||
@@ -541,7 +559,7 @@ func TestHandleRequest(t *testing.T) {
|
||||
HandleRequest(conn, req, manager)
|
||||
|
||||
var resp models.Response[FreedeskState]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
@@ -560,7 +578,8 @@ func TestHandleRequest(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, method := range tests {
|
||||
conn := newMockNetConn()
|
||||
mc := newMockNetConn()
|
||||
conn := models.NewConn(mc)
|
||||
req := models.Request{
|
||||
ID: 123,
|
||||
Method: method,
|
||||
@@ -570,7 +589,7 @@ func TestHandleRequest(t *testing.T) {
|
||||
HandleRequest(conn, req, manager)
|
||||
|
||||
var resp models.Response[any]
|
||||
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
|
||||
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 123, resp.ID)
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/pkg/dbusutil"
|
||||
"github.com/AvengeMedia/dankgo/dbusutil"
|
||||
"github.com/godbus/dbus/v5"
|
||||
)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/pkg/syncmap"
|
||||
"github.com/AvengeMedia/dankgo/syncmap"
|
||||
"github.com/godbus/dbus/v5"
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user