52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
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 := InboxNodeDTO{NodeDTO: toNodeDTO(&n)}
|
|
if kind, ok, err := a.nodes.MetaGet(n.ID, "capture.kind"); err == nil && ok {
|
|
dto.CaptureKind = kind
|
|
}
|
|
if source, ok, err := a.nodes.MetaGet(n.ID, "capture.source"); err == nil && ok {
|
|
dto.CaptureSource = source
|
|
}
|
|
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"
|
|
}
|