From 661bf5d30a2205492d97092a9e46b0e0958660c7 Mon Sep 17 00:00:00 2001 From: relikd Date: Thu, 4 Jun 2020 18:54:09 +0200 Subject: [PATCH] Fix data source update --- main/Common Classes/FilterPipeline.swift | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/main/Common Classes/FilterPipeline.swift b/main/Common Classes/FilterPipeline.swift index 6f6d2e4..d1262ad 100644 --- a/main/Common Classes/FilterPipeline.swift +++ b/main/Common Classes/FilterPipeline.swift @@ -204,7 +204,10 @@ class FilterPipeline { /// - Complexity: O(*n* + (*m*+1) log *n*), where *m* is the number of filters and *n* the number of elements in each filter / projection. func update(_ obj: T, at index: Int) { let status = processPipeline(with: obj, at: index) - guard status.changed else { return } + guard status.changed else { + dataSource[index] = obj // we need to update anyway + return + } let oldPos = display.deleteOld(index) dataSource[index] = obj guard status.display else { @@ -212,16 +215,17 @@ class FilterPipeline { return } let newPos = display.insertNew(index, previousIndex: oldPos) - guard cellAnimations else { return } - if oldPos == -1 { - delegate?.tableView.safeInsertRow(newPos, with: .left) - } else { - if oldPos == newPos { - delegate?.tableView.safeReloadRow(oldPos) + if cellAnimations { + if oldPos == -1 { + delegate?.tableView.safeInsertRow(newPos, with: .left) } else { - delegate?.tableView.safeMoveRow(oldPos, to: newPos) - if delegate?.tableView.isFrontmost ?? false { - delegate?.rowNeedsUpdate(newPos) + if oldPos == newPos { + delegate?.tableView.safeReloadRow(oldPos) + } else { + delegate?.tableView.safeMoveRow(oldPos, to: newPos) + if delegate?.tableView.isFrontmost ?? false { + delegate?.rowNeedsUpdate(newPos) + } } } }