mergeTTNodes function
TTNode?
mergeTTNodes(
- TTNode? existing,
- TTNode? updates, {
- MutableEnum mut = MutableEnum.immutable,
Implementation
TTNode? mergeTTNodes(TTNode? existing, TTNode? updates,
{MutableEnum mut = MutableEnum.immutable}) {
if (existing == null) {
return updates;
}
if (updates == null) {
return existing;
}
final existingMeta = existing.nodeMetaData ?? TTNodeMeta();
final existingState = existingMeta.forward ?? TTNodeState();
final updatedMeta = updates.nodeMetaData ?? TTNodeMeta();
final updatedState = updatedMeta.forward ?? TTNodeState();
if (mut == MutableEnum.mutable) {
existingMeta.forward = existingState;
existing.nodeMetaData = existingMeta;
for (final key in updatedState.keys) {
existing[key] = updates[key];
existingState[key] = updatedState[key]!;
}
return existing;
}
return TTNode.fromJson({
...existing,
...updates,
"_": {
"#": existingMeta.key,
">": {...?existingMeta.forward, ...?updates.nodeMetaData?.forward}
}
});
}