Don't re-sort already fetched post thread items (#6698)

* Don't reorder already seen posts in PostThread

* Add sorting by generation

* Rip out stable order cache

It doesn't make sense because sort() doesn't call the callback for all A/B pairs, and the server returning a different ordering will cause cache misses which means there'll be no stability anyway.

* Make hotness deterministic per fetched at

* Cache random scores while in thread

* Reorder for clarity
This commit is contained in:
dan
2024-11-24 19:10:54 +00:00
committed by GitHub
parent 371e6ad333
commit b9406aa011
2 changed files with 52 additions and 9 deletions
+9
View File
@@ -104,6 +104,7 @@ export function PostThread({uri}: {uri: string | undefined}) {
error: threadError,
refetch,
data: {thread, threadgate} = {},
dataUpdatedAt: fetchedAt,
} = usePostThreadQuery(uri)
const treeView = React.useMemo(
@@ -171,6 +172,8 @@ export function PostThread({uri}: {uri: string | undefined}) {
() => new Set<string>(),
)
const [fetchedAtCache] = React.useState(() => new Map<string, number>())
const [randomCache] = React.useState(() => new Map<string, number>())
const skeleton = React.useMemo(() => {
const threadViewPrefs = preferences?.threadViewPrefs
if (!threadViewPrefs || !thread) return null
@@ -183,6 +186,9 @@ export function PostThread({uri}: {uri: string | undefined}) {
currentDid,
justPostedUris,
threadgateHiddenReplies,
fetchedAtCache,
fetchedAt,
randomCache,
),
currentDid,
treeView,
@@ -199,6 +205,9 @@ export function PostThread({uri}: {uri: string | undefined}) {
hiddenRepliesState,
justPostedUris,
threadgateHiddenReplies,
fetchedAtCache,
fetchedAt,
randomCache,
])
const error = React.useMemo(() => {