Fix "reposted by ..." disappears when post get's (un-)favorited

This commit is contained in:
Marcus Kida 2024-01-03 11:33:39 +01:00
parent c354eeb4d8
commit 0045e7d9a4
No known key found for this signature in database
GPG Key ID: 19FF64E08013CA40
2 changed files with 35 additions and 28 deletions

View File

@ -48,22 +48,26 @@ final public class FeedFetchedResultsController {
newRecords[i] = .fromStatus(status, kind: record.kind)
} else if let reblog = record.status?.reblog, reblog.id == status.id {
// Handle reblogged state
switch status.entity.reblogged {
case .some(true):
newRecords[i] = .fromStatus({
let stat = MastodonStatus.fromEntity(records[i].status!.entity)
stat.isSensitiveToggled = status.isSensitiveToggled
stat.reblog = .fromEntity(status.entity)
return stat
}(), kind: record.kind)
case .some(false), .none:
newRecords[i] = .fromStatus({
let stat = MastodonStatus.fromEntity(status.entity)
stat.isSensitiveToggled = status.isSensitiveToggled
return stat
}(), kind: record.kind)
let isRebloggedByAnyOne: Bool = records[i].status!.reblog != nil
let newStatus: MastodonStatus
if isRebloggedByAnyOne {
// if status was previously reblogged by me: remove reblogged status
if records[i].status!.entity.reblogged == true && status.entity.reblogged == false {
newStatus = .fromEntity(status.entity)
} else {
newStatus = .fromEntity(records[i].status!.entity)
}
} else {
newStatus = .fromEntity(status.entity)
}
newStatus.isSensitiveToggled = status.isSensitiveToggled
newStatus.reblog = isRebloggedByAnyOne ? .fromEntity(status.entity) : nil
newRecords[i] = .fromStatus(newStatus, kind: record.kind)
} else if let reblog = record.status?.reblog, reblog.id == status.reblog?.id {
// Handle re-reblogged state
newRecords[i] = .fromStatus(status, kind: record.kind)

View File

@ -51,22 +51,25 @@ public final class StatusFetchedResultsController {
newRecords[i] = status
} else if let reblog = record.reblog, reblog.id == status.id {
// 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
}()
let isRebloggedByAnyOne: Bool = records[i].reblog != nil
let newStatus: MastodonStatus
if isRebloggedByAnyOne {
// if status was previously reblogged by me: remove reblogged status
if records[i].entity.reblogged == true && status.entity.reblogged == false {
newStatus = .fromEntity(status.entity)
} else {
newStatus = .fromEntity(records[i].entity)
}
} else {
newStatus = .fromEntity(status.entity)
}
newStatus.isSensitiveToggled = status.isSensitiveToggled
newStatus.reblog = isRebloggedByAnyOne ? .fromEntity(status.entity) : nil
newRecords[i] = newStatus
} else if let reblog = record.reblog, reblog.id == status.reblog?.id {
// Handle re-reblogged state
newRecords[i] = status