Share hidden vault root logic across UI and API

This commit is contained in:
Joe Julian
2026-04-11 11:26:00 -07:00
parent ebb8d4f4ff
commit c8f91b300b
5 changed files with 121 additions and 28 deletions
+3 -13
View File
@@ -19,6 +19,7 @@ import (
"git.julianfamily.org/keepassgo/internal/passwords"
"git.julianfamily.org/keepassgo/internal/session"
"git.julianfamily.org/keepassgo/internal/vault"
"git.julianfamily.org/keepassgo/internal/vaultview"
"git.julianfamily.org/keepassgo/internal/webdav"
keepassgov1 "git.julianfamily.org/keepassgo/proto/keepassgo/v1"
"google.golang.org/grpc/codes"
@@ -973,19 +974,8 @@ func entryFromProtoWithModel(model vault.Model, entry *keepassgov1.Entry) vault.
}
}
func hiddenVaultRoot(model vault.Model) string {
if len(model.EntriesInPath(nil)) != 0 {
return ""
}
groups := model.ChildGroups(nil)
if len(groups) != 1 {
return ""
}
return groups[0]
}
func expandClientPath(model vault.Model, path []string) []string {
root := hiddenVaultRoot(model)
root := vaultview.HiddenRoot(model)
if root == "" {
return append([]string(nil), path...)
}
@@ -999,7 +989,7 @@ func expandClientPath(model vault.Model, path []string) []string {
}
func collapseInternalPath(model vault.Model, path []string) []string {
root := hiddenVaultRoot(model)
root := vaultview.HiddenRoot(model)
if root == "" || len(path) == 0 || path[0] != root {
return append([]string(nil), path...)
}