From 72661a343f9c526c31be15f6ba1e9af8da12c6e4 Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Tue, 15 Nov 2022 18:10:30 -0500 Subject: [PATCH] fix(form): fix set operations behaviors --- .../lib/src/data/form_operations/form_difference.dart | 6 ------ .../lib/src/data/form_operations/form_intersection.dart | 6 +++++- .../lib/src/data/form_operations/form_union.dart | 7 +++++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart index 14a78d9c..ec77e957 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart @@ -30,12 +30,6 @@ class FormDifference extends FormOperation { FormInput, dynamic>>[]; - for (final i in b.inputs) { - if (!a.containsKey(i.key)) { - inputs.add(i); - } - } - for (final i in a.inputs) { if (!b.containsKey(i.key)) { inputs.add(i); diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart index 2c1d4cb6..332a7bd1 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart @@ -32,7 +32,11 @@ class FormIntersection extends FormOperation { for (final i in a.inputs) { if (b.containsKey(i.key)) { - inputs.add(i); + if (i.validator.pure) { + inputs.add(b.inputOf(i.key)); + } else { + inputs.add(i); + } } } diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart index a466750b..91725e13 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart @@ -37,6 +37,13 @@ class FormUnion extends FormOperation { for (final i in b.inputs) { if (!a.containsKey(i.key)) { inputs.add(i); + } else { + // if a input is pure, but not b, replace a one with b + if (a.isPureInput(i.key)) { + inputs + ..remove(a.inputOf(i.key)) + ..add(i); + } } }