Track seen in post thread too

This commit is contained in:
Dan Abramov
2024-12-17 21:48:41 +00:00
parent 47c9a373c7
commit b8d298a95d
2 changed files with 19 additions and 2 deletions
+1 -1
View File
@@ -265,7 +265,7 @@ const m = Math.ceil((n * Math.log(p)) / Math.log(1 / Math.pow(2, Math.log(2))))
const k = Math.round((m / n) * Math.log(2))
let globalBloomFilter = new BloomFilter(m, k)
function markGloballySeenPost(uri: string) {
export function markGloballySeenPost(uri: string) {
if (globalBloomFilter.size >= n) {
// If we ever get here, just restart to avoid saturation.
globalBloomFilter = new BloomFilter(m, k)
+18 -1
View File
@@ -1,4 +1,4 @@
import React, {memo, useRef, useState} from 'react'
import React, {memo, useEffect, useRef, useState} from 'react'
import {StyleSheet, useWindowDimensions, View} from 'react-native'
import {runOnJS} from 'react-native-reanimated'
import Animated from 'react-native-reanimated'
@@ -18,6 +18,7 @@ import {ScrollProvider} from '#/lib/ScrollContext'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {cleanError} from '#/lib/strings/errors'
import {isAndroid, isNative, isWeb} from '#/platform/detection'
import {markGloballySeenPost} from '#/state/feed-feedback'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {
fillThreadModerationCache,
@@ -391,6 +392,22 @@ export function PostThread({uri}: {uri: string | undefined}) {
[refetch],
)
useEffect(() => {
if (skeleton) {
// We're not tracking linger time here so conservatively mark
// just the highlighted post and the parent. Presumably,
// if you're already midthread, you know what was above.
const {parents, highlightedPost} = skeleton
markGloballySeenPost(highlightedPost.uri)
for (let i = 0; i < parents.length; i++) {
const parent = parents[i]
if (isThreadPost(parent)) {
markGloballySeenPost(parent.uri)
}
}
}
}, [skeleton])
const {openComposer} = useComposerControls()
const onPressReply = React.useCallback(() => {
if (thread?.type !== 'post') {