Track seen in post thread too
This commit is contained in:
@@ -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))
|
const k = Math.round((m / n) * Math.log(2))
|
||||||
let globalBloomFilter = new BloomFilter(m, k)
|
let globalBloomFilter = new BloomFilter(m, k)
|
||||||
|
|
||||||
function markGloballySeenPost(uri: string) {
|
export function markGloballySeenPost(uri: string) {
|
||||||
if (globalBloomFilter.size >= n) {
|
if (globalBloomFilter.size >= n) {
|
||||||
// If we ever get here, just restart to avoid saturation.
|
// If we ever get here, just restart to avoid saturation.
|
||||||
globalBloomFilter = new BloomFilter(m, k)
|
globalBloomFilter = new BloomFilter(m, k)
|
||||||
|
|||||||
@@ -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 {StyleSheet, useWindowDimensions, View} from 'react-native'
|
||||||
import {runOnJS} from 'react-native-reanimated'
|
import {runOnJS} from 'react-native-reanimated'
|
||||||
import Animated 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 {sanitizeDisplayName} from '#/lib/strings/display-names'
|
||||||
import {cleanError} from '#/lib/strings/errors'
|
import {cleanError} from '#/lib/strings/errors'
|
||||||
import {isAndroid, isNative, isWeb} from '#/platform/detection'
|
import {isAndroid, isNative, isWeb} from '#/platform/detection'
|
||||||
|
import {markGloballySeenPost} from '#/state/feed-feedback'
|
||||||
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
||||||
import {
|
import {
|
||||||
fillThreadModerationCache,
|
fillThreadModerationCache,
|
||||||
@@ -391,6 +392,22 @@ export function PostThread({uri}: {uri: string | undefined}) {
|
|||||||
[refetch],
|
[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 {openComposer} = useComposerControls()
|
||||||
const onPressReply = React.useCallback(() => {
|
const onPressReply = React.useCallback(() => {
|
||||||
if (thread?.type !== 'post') {
|
if (thread?.type !== 'post') {
|
||||||
|
|||||||
Reference in New Issue
Block a user