Keep remote form open during manual entry
ci / lint-test (push) Successful in 1m11s
ci / build (push) Successful in 2m32s

This commit is contained in:
Joe Julian
2026-04-06 07:13:12 -07:00
parent 0c6d707325
commit c361ec5ba3
2 changed files with 36 additions and 2 deletions
+7 -1
View File
@@ -432,6 +432,7 @@ type ui struct {
syncDialogOpen bool
syncMenuOpen bool
mainMenuOpen bool
selectedRemoteConnection bool
securityDialogOpen bool
remotePrefsDialogOpen bool
showSyncPassword bool
@@ -1779,7 +1780,7 @@ func (u *ui) hasSelectedLifecycleTarget() bool {
}
func (u *ui) hasSelectedRemoteTarget() bool {
return strings.TrimSpace(u.remoteBaseURL.Text()) != "" && strings.TrimSpace(u.remotePath.Text()) != ""
return u.selectedRemoteConnection
}
func (u *ui) latestRecentVault() (string, time.Time) {
@@ -1830,6 +1831,7 @@ func (u *ui) switchToLifecycleSelection(mode string) {
u.remoteUsername.SetText("")
u.remotePassword.SetText("")
u.rememberRemoteAuth.Value = false
u.selectedRemoteConnection = false
default:
u.vaultPath.SetText("")
u.remoteBaseURL.SetText("")
@@ -1837,6 +1839,7 @@ func (u *ui) switchToLifecycleSelection(mode string) {
u.remoteUsername.SetText("")
u.remotePassword.SetText("")
u.rememberRemoteAuth.Value = false
u.selectedRemoteConnection = false
}
u.requestMasterPassFocus = u.hasSelectedLifecycleTarget()
u.filter()
@@ -1885,6 +1888,7 @@ func (u *ui) applyRecentRemoteRecord(record recentRemoteRecord) {
u.remotePassword.SetText(record.Password)
u.remotePassword.Mask = '•'
u.rememberRemoteAuth.Value = strings.TrimSpace(record.Username) != "" || record.Password != ""
u.selectedRemoteConnection = true
}
func (u *ui) remotePreferencesCurrentSummary() string {
@@ -3050,6 +3054,7 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
continue
}
u.lifecycleMode = "remote"
u.selectedRemoteConnection = false
u.requestMasterPassFocus = true
}
for u.toggleLifecycleAdvanced.Clicked(gtx) {
@@ -3247,6 +3252,7 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
u.switchToLifecycleSelection("remote")
continue
}
u.selectedRemoteConnection = false
u.remoteBaseURL.SetText("")
u.remotePath.SetText("")
u.remoteUsername.SetText("")
+29 -1
View File
@@ -4421,8 +4421,16 @@ func TestShowRemoteConnectionChooser(t *testing.T) {
u.remoteBaseURL.SetText("https://dav.crew.example.invalid")
u.remotePath.SetText("vaults/bellagio.kdbx")
if got := u.showRemoteConnectionChooser(); !got {
t.Fatal("showRemoteConnectionChooser() = false, want true while manually entering a remote connection")
}
u.applyRecentRemoteRecord(recentRemoteRecord{
BaseURL: "https://dav.crew.example.invalid",
Path: "vaults/bellagio.kdbx",
})
if got := u.showRemoteConnectionChooser(); got {
t.Fatal("showRemoteConnectionChooser() = true, want false when a remote connection is selected")
t.Fatal("showRemoteConnectionChooser() = true, want false after selecting a saved remote connection")
}
u.lifecycleMode = "local"
@@ -4431,6 +4439,26 @@ func TestShowRemoteConnectionChooser(t *testing.T) {
}
}
func TestApplyingRecentRemoteRecordMarksSelectedRemoteConnection(t *testing.T) {
t.Parallel()
u := newUIWithSession("desktop", &session.Manager{})
if u.hasSelectedRemoteTarget() {
t.Fatal("hasSelectedRemoteTarget() = true, want false before selecting a saved remote connection")
}
u.applyRecentRemoteRecord(recentRemoteRecord{
BaseURL: "https://dav.crew.example.invalid",
Path: "vaults/bellagio.kdbx",
Username: "dannyocean",
Password: "topsecret",
})
if !u.hasSelectedRemoteTarget() {
t.Fatal("hasSelectedRemoteTarget() = false, want true after selecting a saved remote connection")
}
}
func TestSwitchToLifecycleSelectionResetsLockedLocalSession(t *testing.T) {
t.Parallel()