Improve StatusFetchedResultsController update handling (IOS-176)

This commit is contained in:
Marcus Kida 2023-11-28 12:23:14 +01:00
parent 66b2bfd5cd
commit 1f73bee772
No known key found for this signature in database
GPG Key ID: 19FF64E08013CA40
1 changed files with 22 additions and 3 deletions

View File

@ -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