package main type InboxNodeDTO struct { NodeDTO CaptureKind string `json:"captureKind"` CaptureSource string `json:"captureSource"` } func (a *App) ListInboxNodes() ([]InboxNodeDTO, error) { if err := a.requireVault(); err != nil { return nil, err } list, err := a.nodes.ListInboxRoots(false) if err != nil { return nil, err } dtos := make([]InboxNodeDTO, 0, len(list)) for _, n := range list { dto, err := a.inboxNodeDTO(&n) if err != nil { return nil, err } dtos = append(dtos, *dto) } for i := range dtos { n, err := a.nodes.CountChildren(dtos[i].ID, "case", "client", "project", "folder", "document", "recipe") if err != nil { return nil, err } dtos[i].HasChildren = n > 0 } return dtos, nil } func (a *App) filterInboxCaptureNodes(list []NodeDTO) []NodeDTO { out := make([]NodeDTO, 0, len(list)) for _, item := range list { if !a.isInboxCaptureNode(item.ID) { out = append(out, item) } } return out } func (a *App) isInboxCaptureNode(nodeID string) bool { v, ok, err := a.nodes.MetaGet(nodeID, "capture.inbox") return err == nil && ok && v == "true" }