From 1f73bee772ce1435bb553497cd761774f3db529b Mon Sep 17 00:00:00 2001 From: Marcus Kida Date: Tue, 28 Nov 2023 12:23:14 +0100 Subject: [PATCH] Improve StatusFetchedResultsController update handling (IOS-176) --- .../StatusFetchedResultsController.swift | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/MastodonSDK/Sources/MastodonCore/FetchedResultsController/StatusFetchedResultsController.swift b/MastodonSDK/Sources/MastodonCore/FetchedResultsController/StatusFetchedResultsController.swift index 05ef80011..78bb50964 100644 --- a/MastodonSDK/Sources/MastodonCore/FetchedResultsController/StatusFetchedResultsController.swift +++ b/MastodonSDK/Sources/MastodonCore/FetchedResultsController/StatusFetchedResultsController.swift @@ -42,10 +42,29 @@ public final class StatusFetchedResultsController { for (i, record) in newRecords.enumerated() { if record.id == status.id { newRecords[i] = status + } else if let reblog = status.reblog, reblog.id == record.id { + newRecords[i] = status } else if let reblog = record.reblog, reblog.id == status.id { - newRecords[i].reblog = status - } else if status.reblog?.id == status.id { - newRecords[i].reblog = status + // Handle reblogged state + switch status.entity.reblogged { + case .some(true): + newRecords[i] = { + let stat = MastodonStatus.fromEntity(records[i].entity) + stat.isSensitiveToggled = status.isSensitiveToggled + stat.reblog = .fromEntity(status.entity) + return stat + }() + case .some(false), .none: + newRecords[i] = { + let stat = MastodonStatus.fromEntity(status.entity) + stat.isSensitiveToggled = status.isSensitiveToggled + return stat + }() + } + + } else if let reblog = record.reblog, reblog.id == status.reblog?.id { + // Handle re-reblogged state + newRecords[i] = status } } records = newRecords