Simplify logic
This commit is contained in:
@@ -7,7 +7,7 @@ import {FEEDBACK_FEEDS, STAGING_FEEDS} from '#/lib/constants'
|
|||||||
import {logEvent} from '#/lib/statsig/statsig'
|
import {logEvent} from '#/lib/statsig/statsig'
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {FeedDescriptor, FeedPostSliceItem} from '#/state/queries/post-feed'
|
import {FeedDescriptor, FeedPostSliceItem} from '#/state/queries/post-feed'
|
||||||
import {getFeedPostSlice} from '#/view/com/posts/PostFeed'
|
import {getItemsForFeedback} from '#/view/com/posts/PostFeed'
|
||||||
import {useAgent} from './session'
|
import {useAgent} from './session'
|
||||||
|
|
||||||
type StateContext = {
|
type StateContext = {
|
||||||
@@ -102,21 +102,15 @@ export function useFeedFeedback(feed: FeedDescriptor, hasSession: boolean) {
|
|||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const slice = getFeedPostSlice(feedItem)
|
const items = getItemsForFeedback(feedItem)
|
||||||
if (slice === null) {
|
for (const {item: postItem, feedContext} of items) {
|
||||||
return
|
|
||||||
}
|
|
||||||
for (const [i, postItem] of slice.items.entries()) {
|
|
||||||
if (!history.current.has(postItem)) {
|
if (!history.current.has(postItem)) {
|
||||||
history.current.add(postItem)
|
history.current.add(postItem)
|
||||||
queue.current.add(
|
queue.current.add(
|
||||||
toString({
|
toString({
|
||||||
item: postItem.uri,
|
item: postItem.uri,
|
||||||
event: 'app.bsky.feed.defs#interactionSeen',
|
event: 'app.bsky.feed.defs#interactionSeen',
|
||||||
feedContext:
|
feedContext,
|
||||||
slice.type === 'videoGridRow'
|
|
||||||
? slice.feedContexts?.[i]
|
|
||||||
: slice.feedContext,
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
sendToFeed()
|
sendToFeed()
|
||||||
|
|||||||
@@ -124,18 +124,23 @@ type FeedRow =
|
|||||||
key: string
|
key: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getFeedPostSlice(feedRow: FeedRow): {
|
export function getItemsForFeedback(feedRow: FeedRow):
|
||||||
items: FeedPostSliceItem[]
|
| {
|
||||||
type: 'sliceItem' | 'videoGridRow'
|
item: FeedPostSliceItem
|
||||||
feedContext?: string | undefined
|
feedContext: string | undefined
|
||||||
feedContexts?: (string | undefined)[]
|
}[] {
|
||||||
} | null {
|
|
||||||
if (feedRow.type === 'sliceItem') {
|
if (feedRow.type === 'sliceItem') {
|
||||||
return {...feedRow.slice, type: 'sliceItem'}
|
return feedRow.slice.items.map(item => ({
|
||||||
|
item,
|
||||||
|
feedContext: feedRow.slice.feedContext,
|
||||||
|
}))
|
||||||
} else if (feedRow.type === 'videoGridRow') {
|
} else if (feedRow.type === 'videoGridRow') {
|
||||||
return feedRow
|
return feedRow.items.map((item, i) => ({
|
||||||
|
item,
|
||||||
|
feedContext: feedRow.feedContexts[i],
|
||||||
|
}))
|
||||||
} else {
|
} else {
|
||||||
return null
|
return []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user