@@ -186,25 +186,41 @@ defmodule Electric.Client.TagTracker do
186186 { deletes , kd_acc , ttk_acc }
187187
188188 % { tags: current_entries , msg: msg } = data ->
189- deactivated_positions =
190- MapSet . new ( removed_entries , fn { pos , _ } -> pos end )
191-
192- updated_ac =
193- data . active_conditions
194- |> Enum . with_index ( )
195- |> Enum . map ( fn { val , idx } ->
196- if MapSet . member? ( deactivated_positions , idx ) , do: false , else: val
197- end )
198-
199- visible = row_visible? ( updated_ac , disjunct_positions )
200-
201- if not visible do
202- ttk_acc = remove_key_from_tags ( ttk_acc , current_entries , key )
203-
204- { [ { key , msg } | deletes ] , Map . delete ( kd_acc , key ) , ttk_acc }
205- else
206- updated_data = % { data | active_conditions: updated_ac }
207- { deletes , Map . put ( kd_acc , key , updated_data ) , ttk_acc }
189+ case data . active_conditions do
190+ nil ->
191+ # Legacy/simple shapes without active_conditions still use
192+ # empty-tag-set deletion semantics rather than DNF visibility.
193+ remaining_entries = MapSet . difference ( current_entries , removed_entries )
194+ ttk_acc = remove_key_from_tags ( ttk_acc , removed_entries , key )
195+
196+ if MapSet . size ( remaining_entries ) == 0 do
197+ { [ { key , msg } | deletes ] , Map . delete ( kd_acc , key ) , ttk_acc }
198+ else
199+ updated_data = % { data | tags: remaining_entries }
200+ { deletes , Map . put ( kd_acc , key , updated_data ) , ttk_acc }
201+ end
202+
203+ active_conditions ->
204+ deactivated_positions =
205+ MapSet . new ( removed_entries , fn { pos , _ } -> pos end )
206+
207+ updated_ac =
208+ active_conditions
209+ |> Enum . with_index ( )
210+ |> Enum . map ( fn { val , idx } ->
211+ if MapSet . member? ( deactivated_positions , idx ) , do: false , else: val
212+ end )
213+
214+ visible = row_visible? ( updated_ac , disjunct_positions )
215+
216+ if not visible do
217+ ttk_acc = remove_key_from_tags ( ttk_acc , current_entries , key )
218+
219+ { [ { key , msg } | deletes ] , Map . delete ( kd_acc , key ) , ttk_acc }
220+ else
221+ updated_data = % { data | active_conditions: updated_ac }
222+ { deletes , Map . put ( kd_acc , key , updated_data ) , ttk_acc }
223+ end
208224 end
209225 end
210226 end )
0 commit comments