diff --git a/Tusker/CoreData/Tusker.xcdatamodeld/Tusker.xcdatamodel/contents b/Tusker/CoreData/Tusker.xcdatamodeld/Tusker.xcdatamodel/contents
index ba52345a..ae05395c 100644
--- a/Tusker/CoreData/Tusker.xcdatamodeld/Tusker.xcdatamodel/contents
+++ b/Tusker/CoreData/Tusker.xcdatamodeld/Tusker.xcdatamodel/contents
@@ -123,7 +123,8 @@
-
+
+
diff --git a/Tusker/Scenes/MainSceneDelegate.swift b/Tusker/Scenes/MainSceneDelegate.swift
index 3379ddc8..dcf37ae2 100644
--- a/Tusker/Scenes/MainSceneDelegate.swift
+++ b/Tusker/Scenes/MainSceneDelegate.swift
@@ -148,7 +148,7 @@ class MainSceneDelegate: UIResponder, UIWindowSceneDelegate, TuskerSceneDelegate
minDate.addTimeInterval(-7 * 24 * 60 * 60)
let statusReq: NSFetchRequest = StatusMO.fetchRequest()
- statusReq.predicate = NSPredicate(format: "(lastFetchedAt = nil) OR (lastFetchedAt < %@)", minDate as NSDate)
+ statusReq.predicate = NSPredicate(format: "((lastFetchedAt = nil) OR (lastFetchedAt < %@)) AND (reblogs.@count = 0)", minDate as NSDate)
let deleteStatusReq = NSBatchDeleteRequest(fetchRequest: statusReq)
deleteStatusReq.resultType = .resultTypeCount
if let res = try? context.execute(deleteStatusReq) as? NSBatchDeleteResult {
diff --git a/Tusker/Screens/Timeline/TimelineViewController.swift b/Tusker/Screens/Timeline/TimelineViewController.swift
index 16d12fe7..a61095b4 100644
--- a/Tusker/Screens/Timeline/TimelineViewController.swift
+++ b/Tusker/Screens/Timeline/TimelineViewController.swift
@@ -445,6 +445,16 @@ class TimelineViewController: UIViewController, TimelineLikeCollectionViewContro
if let status = mastodonController.persistentContainer.status(for: id) {
// touch the status so that, even if it's old, it doesn't get pruned when we go into the background
status.touch()
+
+ // there was a bug where th the reblogged status would get pruned even when it was still refernced by the reblog
+ // as a temporary workaround, until there are no longer user db's in this state,
+ // check if the reblog is invalid and reload the status if so
+ if let reblog = status.reblog,
+ // force the fault to fire
+ case _ = reblog.id,
+ reblog.isDeleted {
+ unloaded.append(id)
+ }
} else {
unloaded.append(id)
}