From 4bb88363e79b0688e766d67db44dd28997f8a613 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 13 Jul 2020 16:06:42 -0500 Subject: [PATCH] Change to only resort when sort parameters change --- .../Shared/Timeline/TimelineModel.swift | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/Multiplatform/Shared/Timeline/TimelineModel.swift b/Multiplatform/Shared/Timeline/TimelineModel.swift index fd81f0ab1..552ec7ca9 100644 --- a/Multiplatform/Shared/Timeline/TimelineModel.swift +++ b/Multiplatform/Shared/Timeline/TimelineModel.swift @@ -55,12 +55,19 @@ class TimelineModel: ObservableObject, UndoableCommandRunner { return _idToArticleDictionary } - private var sortDirection: Bool { - AppDefaults.shared.timelineSortDirection + private var sortDirection = AppDefaults.shared.timelineSortDirection { + didSet { + if sortDirection != oldValue { + sortParametersDidChange() + } + } } - - private var groupByFeed: Bool { - AppDefaults.shared.timelineGroupByFeed + private var groupByFeed = AppDefaults.shared.timelineGroupByFeed { + didSet { + if groupByFeed != oldValue { + sortParametersDidChange() + } + } } init() { @@ -207,10 +214,8 @@ private extension TimelineModel { } @objc func userDefaultsDidChange(_ note: Notification) { - performBlockAndRestoreSelection { - articles = articles.sortedByDate(sortDirection ? .orderedDescending : .orderedAscending, groupByFeed: groupByFeed) - rebuildTimelineItems() - } + sortDirection = AppDefaults.shared.timelineSortDirection + groupByFeed = AppDefaults.shared.timelineGroupByFeed } // MARK: Timeline Management @@ -233,6 +238,13 @@ private extension TimelineModel { } } + func sortParametersDidChange() { + performBlockAndRestoreSelection { + articles = articles.sortedByDate(sortDirection ? .orderedDescending : .orderedAscending, groupByFeed: groupByFeed) + rebuildTimelineItems() + } + } + func performBlockAndRestoreSelection(_ block: (() -> Void)) { // let savedSelection = selectedArticleIDs() block()