Reimplement timeline anchoring (IOS-176)
This commit is contained in:
parent
faac99cd10
commit
9c5e193673
|
@ -6,9 +6,8 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
import CoreData
|
|
||||||
import CoreDataStack
|
|
||||||
import MastodonUI
|
import MastodonUI
|
||||||
|
import MastodonSDK
|
||||||
|
|
||||||
extension HomeTimelineViewModel {
|
extension HomeTimelineViewModel {
|
||||||
|
|
||||||
|
@ -52,37 +51,19 @@ extension HomeTimelineViewModel {
|
||||||
snapshot.appendItems(newItems, toSection: .main)
|
snapshot.appendItems(newItems, toSection: .main)
|
||||||
return snapshot
|
return snapshot
|
||||||
}()
|
}()
|
||||||
#warning("We probably need to replace the code below")
|
|
||||||
// let parentManagedObjectContext = self.context.managedObjectContext
|
let anchors: [MastodonFeed] = records.filter { $0.hasMore == true }
|
||||||
// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
let itemIdentifiers = newSnapshot.itemIdentifiers
|
||||||
// managedObjectContext.parent = parentManagedObjectContext
|
for (index, item) in itemIdentifiers.enumerated() {
|
||||||
// try? await managedObjectContext.perform {
|
guard case let .feed(record) = item else { continue }
|
||||||
// let anchors: [Feed] = {
|
guard anchors.contains(where: { feed in feed.id == record.id }) else { continue }
|
||||||
// let request = Feed.sortedFetchRequest
|
let isLast = index + 1 == itemIdentifiers.count
|
||||||
// request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [
|
if isLast {
|
||||||
// Feed.hasMorePredicate(),
|
newSnapshot.insertItems([.bottomLoader], afterItem: item)
|
||||||
// self.fetchedResultsController.predicate,
|
} else {
|
||||||
// ])
|
newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item)
|
||||||
// do {
|
}
|
||||||
// return try managedObjectContext.fetch(request)
|
}
|
||||||
// } catch {
|
|
||||||
// assertionFailure(error.localizedDescription)
|
|
||||||
// return []
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
//
|
|
||||||
// let itemIdentifiers = newSnapshot.itemIdentifiers
|
|
||||||
// for (index, item) in itemIdentifiers.enumerated() {
|
|
||||||
// guard case let .feed(record) = item else { continue }
|
|
||||||
// guard anchors.contains(where: { feed in feed.objectID == record.objectID }) else { continue }
|
|
||||||
// let isLast = index + 1 == itemIdentifiers.count
|
|
||||||
// if isLast {
|
|
||||||
// newSnapshot.insertItems([.bottomLoader], afterItem: item)
|
|
||||||
// } else {
|
|
||||||
// newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers
|
let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers
|
||||||
if !hasChanges && !self.hasPendingStatusEditReload {
|
if !hasChanges && !self.hasPendingStatusEditReload {
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
import CoreData
|
import CoreData
|
||||||
import CoreDataStack
|
import MastodonSDK
|
||||||
|
|
||||||
extension NotificationTimelineViewModel {
|
extension NotificationTimelineViewModel {
|
||||||
|
|
||||||
|
@ -48,37 +48,18 @@ extension NotificationTimelineViewModel {
|
||||||
return snapshot
|
return snapshot
|
||||||
}()
|
}()
|
||||||
|
|
||||||
#warning("Do we still need the code below?")
|
let anchors: [MastodonFeed] = records.filter { $0.hasMore == true }
|
||||||
// let parentManagedObjectContext = self.context.managedObjectContext
|
let itemIdentifiers = newSnapshot.itemIdentifiers
|
||||||
// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
for (index, item) in itemIdentifiers.enumerated() {
|
||||||
// managedObjectContext.parent = parentManagedObjectContext
|
guard case let .feed(record) = item else { continue }
|
||||||
// try? await managedObjectContext.perform {
|
guard anchors.contains(where: { feed in feed.id == record.id }) else { continue }
|
||||||
// let anchors: [Feed] = {
|
let isLast = index + 1 == itemIdentifiers.count
|
||||||
// let request = Feed.sortedFetchRequest
|
if isLast {
|
||||||
// request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [
|
newSnapshot.insertItems([.bottomLoader], afterItem: item)
|
||||||
// Feed.hasMorePredicate(),
|
} else {
|
||||||
// self.feedFetchedResultsController.predicate,
|
newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item)
|
||||||
// ])
|
}
|
||||||
// do {
|
}
|
||||||
// return try managedObjectContext.fetch(request)
|
|
||||||
// } catch {
|
|
||||||
// assertionFailure(error.localizedDescription)
|
|
||||||
// return []
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
//
|
|
||||||
// let itemIdentifiers = newSnapshot.itemIdentifiers
|
|
||||||
// for (index, item) in itemIdentifiers.enumerated() {
|
|
||||||
// guard case let .feed(record) = item else { continue }
|
|
||||||
// guard anchors.contains(where: { feed in feed.objectID == record.objectID }) else { continue }
|
|
||||||
// let isLast = index + 1 == itemIdentifiers.count
|
|
||||||
// if isLast {
|
|
||||||
// newSnapshot.insertItems([.bottomLoader], afterItem: item)
|
|
||||||
// } else {
|
|
||||||
// newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers
|
let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers
|
||||||
if !hasChanges {
|
if !hasChanges {
|
||||||
|
|
Loading…
Reference in New Issue