1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-05-02 02:22:06 -04:00

loginctl: simplify event handling

This commit is contained in:
bbedward
2026-04-22 10:32:05 -04:00
parent b87c36d29e
commit 97fa86d8f0
8 changed files with 18 additions and 129 deletions

View File

@@ -35,12 +35,7 @@ type SessionState struct {
type EventType string type EventType string
const ( const (
EventStateChanged EventType = "state_changed" EventStateChanged EventType = "state_changed"
EventLock EventType = "lock"
EventUnlock EventType = "unlock"
EventPrepareForSleep EventType = "prepare_for_sleep"
EventIdleHintChanged EventType = "idle_hint_changed"
EventLockedHintChanged EventType = "locked_hint_changed"
) )
type SessionEvent struct { type SessionEvent struct {

View File

@@ -8,11 +8,6 @@ import (
func TestEventType_Constants(t *testing.T) { func TestEventType_Constants(t *testing.T) {
assert.Equal(t, EventType("state_changed"), EventStateChanged) assert.Equal(t, EventType("state_changed"), EventStateChanged)
assert.Equal(t, EventType("lock"), EventLock)
assert.Equal(t, EventType("unlock"), EventUnlock)
assert.Equal(t, EventType("prepare_for_sleep"), EventPrepareForSleep)
assert.Equal(t, EventType("idle_hint_changed"), EventIdleHintChanged)
assert.Equal(t, EventType("locked_hint_changed"), EventLockedHintChanged)
} }
func TestSessionState_Struct(t *testing.T) { func TestSessionState_Struct(t *testing.T) {
@@ -40,11 +35,11 @@ func TestSessionEvent_Struct(t *testing.T) {
} }
event := SessionEvent{ event := SessionEvent{
Type: EventLock, Type: EventStateChanged,
Data: state, Data: state,
} }
assert.Equal(t, EventLock, event.Type) assert.Equal(t, EventStateChanged, event.Type)
assert.Equal(t, "1", event.Data.SessionID) assert.Equal(t, "1", event.Data.SessionID)
assert.True(t, event.Data.Locked) assert.True(t, event.Data.Locked)
} }

View File

@@ -2,12 +2,10 @@ package version
import ( import (
"os" "os"
"os/exec"
"path/filepath" "path/filepath"
"testing" "testing"
mocks_version "github.com/AvengeMedia/DankMaterialShell/core/internal/mocks/version" mocks_version "github.com/AvengeMedia/DankMaterialShell/core/internal/mocks/version"
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
) )
func TestCompareVersions(t *testing.T) { func TestCompareVersions(t *testing.T) {
@@ -150,76 +148,6 @@ func TestGetCurrentDMSVersion_NotInstalled(t *testing.T) {
} }
} }
func TestGetCurrentDMSVersion_GitTag(t *testing.T) {
if !utils.CommandExists("git") {
t.Skip("git not available")
}
tempDir := t.TempDir()
dmsPath := filepath.Join(tempDir, ".config", "quickshell", "dms")
os.MkdirAll(dmsPath, 0o755)
originalHome := os.Getenv("HOME")
defer os.Setenv("HOME", originalHome)
os.Setenv("HOME", tempDir)
exec.Command("git", "init", dmsPath).Run()
exec.Command("git", "-C", dmsPath, "config", "user.email", "test@test.com").Run()
exec.Command("git", "-C", dmsPath, "config", "user.name", "Test User").Run()
testFile := filepath.Join(dmsPath, "test.txt")
os.WriteFile(testFile, []byte("test"), 0o644)
exec.Command("git", "-C", dmsPath, "add", ".").Run()
exec.Command("git", "-C", dmsPath, "commit", "-m", "initial").Run()
exec.Command("git", "-C", dmsPath, "tag", "v0.1.0").Run()
version, err := GetCurrentDMSVersion()
if err != nil {
t.Fatalf("GetCurrentDMSVersion() failed: %v", err)
}
if version != "v0.1.0" {
t.Errorf("Expected version v0.1.0, got %s", version)
}
}
func TestGetCurrentDMSVersion_GitBranch(t *testing.T) {
if !utils.CommandExists("git") {
t.Skip("git not available")
}
tempDir := t.TempDir()
dmsPath := filepath.Join(tempDir, ".config", "quickshell", "dms")
os.MkdirAll(dmsPath, 0o755)
originalHome := os.Getenv("HOME")
defer os.Setenv("HOME", originalHome)
os.Setenv("HOME", tempDir)
exec.Command("git", "init", dmsPath).Run()
exec.Command("git", "-C", dmsPath, "config", "user.email", "test@test.com").Run()
exec.Command("git", "-C", dmsPath, "config", "user.name", "Test User").Run()
exec.Command("git", "-C", dmsPath, "checkout", "-b", "master").Run()
testFile := filepath.Join(dmsPath, "test.txt")
os.WriteFile(testFile, []byte("test"), 0o644)
exec.Command("git", "-C", dmsPath, "add", ".").Run()
exec.Command("git", "-C", dmsPath, "commit", "-m", "initial").Run()
version, err := GetCurrentDMSVersion()
if err != nil {
t.Fatalf("GetCurrentDMSVersion() failed: %v", err)
}
if version == "" {
t.Error("Expected non-empty version")
}
if len(version) < 7 {
t.Errorf("Expected version with branch@commit format, got %s", version)
}
}
func TestVersionInfo_IsGit(t *testing.T) { func TestVersionInfo_IsGit(t *testing.T) {
tests := []struct { tests := []struct {
current string current string

View File

@@ -341,18 +341,6 @@ Singleton {
Connections { Connections {
target: DMSService target: DMSService
enabled: typeof DMSService !== "undefined" && typeof SessionData !== "undefined"
function onLoginctlEvent(event) {
if (!SessionData.themeModeAutoEnabled)
return;
if (typeof SettingsData !== "undefined" && SettingsData.loginctlLockIntegration)
return;
const eventType = String(event?.type || event?.event || "").toLowerCase();
if (eventType === "unlock") {
root.triggerThemeAutomationRefresh();
}
}
function onThemeAutoStateUpdate(data) { function onThemeAutoStateUpdate(data) {
if (!SessionData.themeModeAutoEnabled) { if (!SessionData.themeModeAutoEnabled) {
@@ -415,7 +403,7 @@ Singleton {
Connections { Connections {
target: SessionService target: SessionService
enabled: typeof SessionService !== "undefined" && typeof SessionData !== "undefined" && SessionData.themeModeAutoEnabled enabled: SessionData.themeModeAutoEnabled
function onSessionUnlocked() { function onSessionUnlocked() {
root.triggerThemeAutomationRefresh(); root.triggerThemeAutomationRefresh();

View File

@@ -247,16 +247,16 @@ Item {
repeat: false repeat: false
onTriggered: { onTriggered: {
root.recreateOsdSurfaces(); root.recreateOsdSurfaces();
root.pendingOsdResumeReloads--;
if (root.pendingOsdResumeReloads > 1) { if (root.pendingOsdResumeReloads <= 0) {
root.pendingOsdResumeReloads--; root.pendingOsdResumeReloads = 0;
interval = 1400; interval = 400;
restart();
return; return;
} }
root.pendingOsdResumeReloads = 0; interval = 1400;
interval = 400; restart();
} }
} }

View File

@@ -45,7 +45,6 @@ Singleton {
signal networkStateUpdate(var data) signal networkStateUpdate(var data)
signal cupsStateUpdate(var data) signal cupsStateUpdate(var data)
signal loginctlStateUpdate(var data) signal loginctlStateUpdate(var data)
signal loginctlEvent(var event)
signal capabilitiesReceived signal capabilitiesReceived
signal credentialsRequest(var data) signal credentialsRequest(var data)
signal bluetoothPairingRequest(var data) signal bluetoothPairingRequest(var data)
@@ -348,11 +347,7 @@ Singleton {
} else if (service === "network.credentials") { } else if (service === "network.credentials") {
credentialsRequest(data); credentialsRequest(data);
} else if (service === "loginctl") { } else if (service === "loginctl") {
if (data.event) { loginctlStateUpdate(data);
loginctlEvent(data);
} else {
loginctlStateUpdate(data);
}
} else if (service === "bluetooth.pairing") { } else if (service === "bluetooth.pairing") {
bluetoothPairingRequest(data); bluetoothPairingRequest(data);
} else if (service === "cups") { } else if (service === "cups") {

View File

@@ -749,8 +749,13 @@ Singleton {
runResumeRecoveryPass(); runResumeRecoveryPass();
resumeRecoveryAttempt++; resumeRecoveryAttempt++;
if (resumeRecoveryAttempt < 3) { switch (resumeRecoveryAttempt) {
interval = resumeRecoveryAttempt === 1 ? 1400 : 2600; case 1:
interval = 1400;
restart();
return;
case 2:
interval = 2600;
restart(); restart();
return; return;
} }

View File

@@ -472,7 +472,6 @@ Singleton {
} }
function onCapabilitiesReceived() { function onCapabilitiesReceived() {
checkDMSCapabilities();
syncSleepInhibitor(); syncSleepInhibitor();
} }
} }
@@ -526,10 +525,6 @@ Singleton {
function onLoginctlStateUpdate(data) { function onLoginctlStateUpdate(data) {
updateLoginctlState(data); updateLoginctlState(data);
} }
function onLoginctlEvent(event) {
handleLoginctlEvent(event);
}
} }
function checkDMSCapabilities() { function checkDMSCapabilities() {
@@ -677,16 +672,4 @@ Singleton {
loginctlStateChanged(); loginctlStateChanged();
} }
function handleLoginctlEvent(event) {
if (event.event === "Lock") {
locked = true;
lockedHint = true;
sessionLocked();
} else if (event.event === "Unlock") {
locked = false;
lockedHint = false;
sessionUnlocked();
}
}
} }