ensureNode function

RouteGraphFile ensureNode(
  1. RouteGraphFile g,
  2. String screen,
  3. String ts
)

Guarantee screen exists as a node without claiming a visit.

Implementation

RouteGraphFile ensureNode(RouteGraphFile g, String screen, String ts) {
  final s = screen.trim();
  if (s.isEmpty) return g;
  if (g.nodes.any((n) => n.screen == s)) return g;

  return RouteGraphFile(
    schemaVersion: g.schemaVersion,
    type: g.type,
    nodes: <RouteGraphNode>[
      ...g.nodes,
      RouteGraphNode(screen: s, firstSeen: ts, lastSeen: ts, visitCount: 0),
    ],
    edges: g.edges,
    sync: g.sync.markDirty(ts),
  );
}