Fix Android startup defaults and window sizing

This commit is contained in:
Joe Julian
2026-03-30 07:30:06 -07:00
parent 794eed04d4
commit fca121f170
2 changed files with 46 additions and 6 deletions
+21 -6
View File
@@ -10,6 +10,7 @@ import (
"os"
"os/exec"
"path/filepath"
"runtime"
"slices"
"strings"
"time"
@@ -413,6 +414,17 @@ func resolveFlagOrEnv(flagValue, envName, fallback string) string {
return fallback
}
func defaultModeForRuntime(goos string) string {
if strings.EqualFold(strings.TrimSpace(goos), "android") {
return "phone"
}
return "desktop"
}
func shouldUsePreviewWindowSize(mode, goos string) bool {
return !strings.EqualFold(strings.TrimSpace(goos), "android")
}
func (u *ui) selectedAttachmentItems() []attachmentItem {
item, ok := u.selectedEntry()
if !ok || len(item.Attachments) == 0 {
@@ -2903,7 +2915,7 @@ func main() {
stateDir := flag.String("state-dir", "", "directory for KeePassGO state such as recent-vault history and default save targets")
flag.Parse()
resolvedMode := resolveFlagOrEnv(*mode, "KEEPASSGO_MODE", "desktop")
resolvedMode := resolveFlagOrEnv(*mode, "KEEPASSGO_MODE", defaultModeForRuntime(runtime.GOOS))
resolvedStateDir := resolveFlagOrEnv(*stateDir, "KEEPASSGO_STATE_DIR", "")
width := unit.Dp(1180)
@@ -2916,14 +2928,17 @@ func main() {
go func() {
w := new(app.Window)
w.Option(
app.Title(productName),
app.Size(width, height),
)
options := []app.Option{app.Title(productName)}
if shouldUsePreviewWindowSize(resolvedMode, runtime.GOOS) {
options = append(options, app.Size(width, height))
}
w.Option(options...)
if err := run(w, strings.ToLower(resolvedMode), defaultStatePaths(resolvedStateDir)); err != nil {
panic(err)
}
os.Exit(0)
if !strings.EqualFold(runtime.GOOS, "android") {
os.Exit(0)
}
}()
app.Main()
}
+25
View File
@@ -2348,6 +2348,31 @@ func TestResolveFlagOrEnvPrefersFlagThenEnvThenFallback(t *testing.T) {
}
}
func TestDefaultModeForRuntimeUsesPhoneOnAndroid(t *testing.T) {
t.Parallel()
if got := defaultModeForRuntime("android"); got != "phone" {
t.Fatalf("defaultModeForRuntime(android) = %q, want %q", got, "phone")
}
if got := defaultModeForRuntime("linux"); got != "desktop" {
t.Fatalf("defaultModeForRuntime(linux) = %q, want %q", got, "desktop")
}
}
func TestShouldUsePreviewWindowSizeSkipsAndroid(t *testing.T) {
t.Parallel()
if got := shouldUsePreviewWindowSize("desktop", "android"); got {
t.Fatal("shouldUsePreviewWindowSize(desktop, android) = true, want false")
}
if got := shouldUsePreviewWindowSize("phone", "android"); got {
t.Fatal("shouldUsePreviewWindowSize(phone, android) = true, want false")
}
if got := shouldUsePreviewWindowSize("desktop", "linux"); !got {
t.Fatal("shouldUsePreviewWindowSize(desktop, linux) = false, want true")
}
}
func TestEnterOnLocalLifecycleScreenDefaultsToOpenVault(t *testing.T) {
t.Parallel()