forked from shadowfacts/Tusker
Fix warning when a post appears in both the pinned and regular sections of a profile
This commit is contained in:
parent
0a7709526f
commit
af0c9c92b6
|
@ -92,7 +92,7 @@ class ProfileStatusesViewController: DiffableTimelineLikeTableViewController<Pro
|
|||
self.mastodonController.persistentContainer.addAll(statuses: statuses) {
|
||||
DispatchQueue.main.async {
|
||||
var snapshot = self.dataSource.snapshot()
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown) }, toSection: .statuses)
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown, pinned: false) }, toSection: .statuses)
|
||||
if self.kind == .statuses {
|
||||
self.loadPinnedStatuses(snapshot: { snapshot }, completion: completion)
|
||||
} else {
|
||||
|
@ -120,7 +120,7 @@ class ProfileStatusesViewController: DiffableTimelineLikeTableViewController<Pro
|
|||
DispatchQueue.main.async {
|
||||
var snapshot = snapshot()
|
||||
snapshot.deleteItems(snapshot.itemIdentifiers(inSection: .pinned))
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown) }, toSection: .pinned)
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown, pinned: true) }, toSection: .pinned)
|
||||
completion(.success(snapshot))
|
||||
}
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ class ProfileStatusesViewController: DiffableTimelineLikeTableViewController<Pro
|
|||
|
||||
self.mastodonController.persistentContainer.addAll(statuses: statuses) {
|
||||
var snapshot = currentSnapshot()
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown) }, toSection: .statuses)
|
||||
snapshot.appendItems(statuses.map { Item(id: $0.id, state: .unknown, pinned: false) }, toSection: .statuses)
|
||||
completion(.success(snapshot))
|
||||
}
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ class ProfileStatusesViewController: DiffableTimelineLikeTableViewController<Pro
|
|||
|
||||
self.mastodonController.persistentContainer.addAll(statuses: statuses) {
|
||||
var snapshot = currentSnapshot()
|
||||
let items = statuses.map { Item(id: $0.id, state: .unknown) }
|
||||
let items = statuses.map { Item(id: $0.id, state: .unknown, pinned: false) }
|
||||
if let first = snapshot.itemIdentifiers(inSection: .statuses).first {
|
||||
snapshot.insertItems(items, beforeItem: first)
|
||||
} else {
|
||||
|
@ -248,13 +248,15 @@ extension ProfileStatusesViewController {
|
|||
struct Item: Hashable {
|
||||
let id: String
|
||||
let state: StatusState
|
||||
let pinned: Bool
|
||||
|
||||
static func ==(lhs: Item, rhs: Item) -> Bool {
|
||||
return lhs.id == rhs.id
|
||||
return lhs.id == rhs.id && lhs.pinned == rhs.pinned
|
||||
}
|
||||
|
||||
func hash(into hasher: inout Hasher) {
|
||||
hasher.combine(id)
|
||||
hasher.combine(pinned)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue