@@ -154,7 +154,6 @@ final class FilterCoordinator {
154154 }
155155
156156 newFilter. filterOperator = settings. defaultOperator. toFilterOperator ( )
157- newFilter. isSelected = true
158157
159158 mutateSelectedTabFilterState { state in
160159 state. filters. append ( newFilter)
@@ -166,7 +165,6 @@ final class FilterCoordinator {
166165 var newFilter = TableFilter ( )
167166 newFilter. columnName = columnName
168167 newFilter. filterOperator = settings. defaultOperator. toFilterOperator ( )
169- newFilter. isSelected = true
170168
171169 mutateSelectedTabFilterState { state in
172170 state. filters. append ( newFilter)
@@ -179,7 +177,7 @@ final class FilterCoordinator {
179177 func setFKFilter( _ filter: TableFilter ) {
180178 mutateSelectedTabFilterState { state in
181179 state. filters = [ filter]
182- state. appliedFilters = [ filter ]
180+ state. commit = . all
183181 state. isVisible = true
184182 state. filterLogicMode = . and
185183 }
@@ -192,7 +190,6 @@ final class FilterCoordinator {
192190 filterOperator: filter. filterOperator,
193191 value: filter. value,
194192 secondValue: filter. secondValue,
195- isSelected: true ,
196193 isEnabled: filter. isEnabled,
197194 rawSQL: filter. rawSQL
198195 )
@@ -208,7 +205,9 @@ final class FilterCoordinator {
208205 func removeFilter( _ filter: TableFilter ) {
209206 mutateSelectedTabFilterState { state in
210207 state. filters. removeAll { $0. id == filter. id }
211- state. appliedFilters. removeAll { $0. id == filter. id }
208+ if case . solo( let id) = state. commit, id == filter. id {
209+ state. commit = nil
210+ }
212211 }
213212 }
214213
@@ -279,28 +278,29 @@ final class FilterCoordinator {
279278 guard filter. isValid else { return }
280279 mutateSelectedTabFilterState { state in
281280 state. filters = [ filter]
282- state. appliedFilters = [ filter ]
281+ state. commit = . all
283282 state. isVisible = true
284283 }
285284 }
286285
287- func applySelectedFilters ( ) {
286+ func applyAllFilters ( ) {
288287 mutateSelectedTabFilterState { state in
289- state. appliedFilters = state . filters . filter { $0 . isSelected && $0 . isValid }
288+ state. commit = . all
290289 }
291290 saveLastFiltersForActiveTable ( )
292291 }
293292
294- func applyAllFilters( ) {
293+ func applySoloFilter( _ filter: TableFilter ) {
294+ guard filter. isValid else { return }
295295 mutateSelectedTabFilterState { state in
296- state. appliedFilters = state . filters . filter { $0 . isEnabled && $0 . isValid }
296+ state. commit = . solo ( filter. id )
297297 }
298298 saveLastFiltersForActiveTable ( )
299299 }
300300
301301 func clearAppliedFilters( ) {
302302 mutateSelectedTabFilterState { state in
303- state. appliedFilters = [ ]
303+ state. commit = nil
304304 }
305305 }
306306
@@ -330,31 +330,13 @@ final class FilterCoordinator {
330330 }
331331 }
332332
333- // MARK: - Selection
334-
335- func selectAllFilters( _ selected: Bool ) {
336- mutateSelectedTabFilterState { state in
337- for index in 0 ..< state. filters. count {
338- state. filters [ index] . isSelected = selected
339- }
340- }
341- }
342-
343- func toggleFilterSelection( _ filter: TableFilter ) {
344- mutateSelectedTabFilterState { state in
345- if let index = state. filters. firstIndex ( where: { $0. id == filter. id } ) {
346- state. filters [ index] . isSelected. toggle ( )
347- }
348- }
349- }
350-
351333 // MARK: - Persistence
352334
353335 func saveLastFiltersForActiveTable( ) {
354336 guard let tab = parent. tabManager. selectedTab,
355337 let tableName = tab. tableContext. tableName else { return }
356338 FilterSettingsStorage . shared. saveLastFilters (
357- tab. filterState. appliedFilters ,
339+ tab. filterState. filters . filter ( \ . isValid ) ,
358340 for: tableName,
359341 connectionId: parent. connectionId,
360342 databaseName: tab. tableContext. databaseName,
@@ -365,7 +347,7 @@ final class FilterCoordinator {
365347 func saveLastFilters( for tableName: String ) {
366348 guard let tab = parent. tabManager. selectedTab else { return }
367349 FilterSettingsStorage . shared. saveLastFilters (
368- tab. filterState. appliedFilters ,
350+ tab. filterState. filters . filter ( \ . isValid ) ,
369351 for: tableName,
370352 connectionId: parent. connectionId,
371353 databaseName: tab. tableContext. databaseName,
@@ -412,15 +394,15 @@ final class FilterCoordinator {
412394 switch panelState {
413395 case . alwaysHide:
414396 state. filters = [ ]
415- state. appliedFilters = [ ]
397+ state. commit = nil
416398 state. isVisible = false
417399 case . alwaysShow:
418400 state. filters = saved
419- state. appliedFilters = saved
401+ state. commit = . all
420402 state. isVisible = true
421403 case . restoreLast:
422404 state. filters = saved
423- state. appliedFilters = saved
405+ state. commit = . all
424406 state. isVisible = !saved. isEmpty
425407 }
426408 return state
@@ -429,7 +411,7 @@ final class FilterCoordinator {
429411 func clearFilterState( ) {
430412 mutateSelectedTabFilterState { state in
431413 state. filters = [ ]
432- state. appliedFilters = [ ]
414+ state. commit = nil
433415 }
434416 }
435417
@@ -475,16 +457,7 @@ final class FilterCoordinator {
475457 }
476458
477459 private func filtersForPreview( in state: TabFilterState ) -> [ TableFilter ] {
478- var valid : [ TableFilter ] = [ ]
479- var selectedValid : [ TableFilter ] = [ ]
480- for filter in state. filters where filter. isEnabled && filter. isValid {
481- valid. append ( filter)
482- if filter. isSelected { selectedValid. append ( filter) }
483- }
484- if selectedValid. count == valid. count || selectedValid. isEmpty {
485- return valid
486- }
487- return selectedValid
460+ state. filters. filter { $0. isEnabled && $0. isValid }
488461 }
489462
490463 // MARK: - Private
0 commit comments