summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/processing/workers/fromclientapi.go3
-rw-r--r--internal/processing/workers/fromfediapi.go3
-rw-r--r--internal/processing/workers/surfacetimeline.go6
3 files changed, 12 insertions, 0 deletions
diff --git a/internal/processing/workers/fromclientapi.go b/internal/processing/workers/fromclientapi.go
index 8cd67dd2a..0e27eea0e 100644
--- a/internal/processing/workers/fromclientapi.go
+++ b/internal/processing/workers/fromclientapi.go
@@ -750,6 +750,9 @@ func (p *clientAPI) UpdateAccount(ctx context.Context, cMsg *messages.FromClient
log.Errorf(ctx, "error federating account update: %v", err)
}
+ // Account representation has changed, invalidate from timelines.
+ p.surface.invalidateTimelineEntriesByAccount(account.ID)
+
return nil
}
diff --git a/internal/processing/workers/fromfediapi.go b/internal/processing/workers/fromfediapi.go
index 0f0c7549e..93dd5b00e 100644
--- a/internal/processing/workers/fromfediapi.go
+++ b/internal/processing/workers/fromfediapi.go
@@ -811,6 +811,9 @@ func (p *fediAPI) UpdateAccount(ctx context.Context, fMsg *messages.FromFediAPI)
log.Errorf(ctx, "error refreshing account: %v", err)
}
+ // Account representation has changed, invalidate from timelines.
+ p.surface.invalidateTimelineEntriesByAccount(account.ID)
+
return nil
}
diff --git a/internal/processing/workers/surfacetimeline.go b/internal/processing/workers/surfacetimeline.go
index 2046d1995..ebb77b6bb 100644
--- a/internal/processing/workers/surfacetimeline.go
+++ b/internal/processing/workers/surfacetimeline.go
@@ -826,6 +826,12 @@ func (s *Surface) removeTimelineEntriesByAccount(accountID string) {
s.State.Caches.Timelines.List.RemoveByAccountIDs(accountID)
}
+// removeTimelineEntriesByAccount invalidates all cached timeline entries authored by account ID.
+func (s *Surface) invalidateTimelineEntriesByAccount(accountID string) {
+ s.State.Caches.Timelines.Home.UnprepareByAccountIDs(accountID)
+ s.State.Caches.Timelines.List.UnprepareByAccountIDs(accountID)
+}
+
func (s *Surface) removeRelationshipFromTimelines(ctx context.Context, timelineAccountID string, targetAccountID string) {
// Remove all statuses by target account
// from given account's home timeline.