Add missing passive feed interactions (#9043)
This commit is contained in:
+11
-42
@@ -28,39 +28,9 @@ import {useAgent} from './session'
|
|||||||
|
|
||||||
export const FEEDBACK_FEEDS = [...PROD_FEEDS, ...STAGING_FEEDS]
|
export const FEEDBACK_FEEDS = [...PROD_FEEDS, ...STAGING_FEEDS]
|
||||||
|
|
||||||
export const PASSIVE_FEEDBACK_INTERACTIONS = [
|
export const DIRECT_FEEDBACK_INTERACTIONS = new Set<
|
||||||
'app.bsky.feed.defs#clickthroughItem',
|
AppBskyFeedDefs.Interaction['event']
|
||||||
'app.bsky.feed.defs#clickthroughAuthor',
|
>(['app.bsky.feed.defs#requestLess', 'app.bsky.feed.defs#requestMore'])
|
||||||
'app.bsky.feed.defs#clickthroughReposter',
|
|
||||||
'app.bsky.feed.defs#clickthroughEmbed',
|
|
||||||
'app.bsky.feed.defs#interactionSeen',
|
|
||||||
] as const
|
|
||||||
|
|
||||||
export type PassiveFeedbackInteraction =
|
|
||||||
(typeof PASSIVE_FEEDBACK_INTERACTIONS)[number]
|
|
||||||
|
|
||||||
export const DIRECT_FEEDBACK_INTERACTIONS = [
|
|
||||||
'app.bsky.feed.defs#requestLess',
|
|
||||||
'app.bsky.feed.defs#requestMore',
|
|
||||||
] as const
|
|
||||||
|
|
||||||
export type DirectFeedbackInteraction =
|
|
||||||
(typeof DIRECT_FEEDBACK_INTERACTIONS)[number]
|
|
||||||
|
|
||||||
export const ALL_FEEDBACK_INTERACTIONS = [
|
|
||||||
...PASSIVE_FEEDBACK_INTERACTIONS,
|
|
||||||
...DIRECT_FEEDBACK_INTERACTIONS,
|
|
||||||
] as const
|
|
||||||
|
|
||||||
export type FeedbackInteraction = (typeof ALL_FEEDBACK_INTERACTIONS)[number]
|
|
||||||
|
|
||||||
export function isFeedbackInteraction(
|
|
||||||
interactionEvent: string,
|
|
||||||
): interactionEvent is FeedbackInteraction {
|
|
||||||
return ALL_FEEDBACK_INTERACTIONS.includes(
|
|
||||||
interactionEvent as FeedbackInteraction,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const logger = Logger.create(Logger.Context.FeedFeedback)
|
const logger = Logger.create(Logger.Context.FeedFeedback)
|
||||||
|
|
||||||
@@ -97,7 +67,6 @@ export function useFeedFeedback(
|
|||||||
const proxyDid = feed?.view?.did
|
const proxyDid = feed?.view?.did
|
||||||
const enabled =
|
const enabled =
|
||||||
Boolean(feed) && Boolean(proxyDid) && acceptsInteractions && hasSession
|
Boolean(feed) && Boolean(proxyDid) && acceptsInteractions && hasSession
|
||||||
const enabledInteractions = getEnabledInteractions(enabled, feed, isDiscover)
|
|
||||||
|
|
||||||
const queue = useRef<Set<string>>(new Set())
|
const queue = useRef<Set<string>>(new Set())
|
||||||
const history = useRef<
|
const history = useRef<
|
||||||
@@ -123,8 +92,7 @@ export function useFeedFeedback(
|
|||||||
const interactionsToSend = interactions.filter(
|
const interactionsToSend = interactions.filter(
|
||||||
interaction =>
|
interaction =>
|
||||||
interaction.event &&
|
interaction.event &&
|
||||||
isFeedbackInteraction(interaction.event) &&
|
isInteractionAllowed(enabled, feed, interaction.event),
|
||||||
enabledInteractions.includes(interaction.event),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (interactionsToSend.length === 0) {
|
if (interactionsToSend.length === 0) {
|
||||||
@@ -158,7 +126,7 @@ export function useFeedFeedback(
|
|||||||
)
|
)
|
||||||
throttledFlushAggregatedStats()
|
throttledFlushAggregatedStats()
|
||||||
logger.debug('flushed')
|
logger.debug('flushed')
|
||||||
}, [agent, throttledFlushAggregatedStats, proxyDid, enabledInteractions])
|
}, [agent, throttledFlushAggregatedStats, proxyDid, enabled, feed])
|
||||||
|
|
||||||
const sendToFeed = useMemo(
|
const sendToFeed = useMemo(
|
||||||
() =>
|
() =>
|
||||||
@@ -251,15 +219,16 @@ export function isDiscoverFeed(feed?: FeedDescriptor) {
|
|||||||
return !!feed && FEEDBACK_FEEDS.includes(feed)
|
return !!feed && FEEDBACK_FEEDS.includes(feed)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEnabledInteractions(
|
function isInteractionAllowed(
|
||||||
enabled: boolean,
|
enabled: boolean,
|
||||||
feed: FeedSourceFeedInfo | undefined,
|
feed: FeedSourceFeedInfo | undefined,
|
||||||
isDiscover: boolean,
|
interaction: AppBskyFeedDefs.Interaction['event'],
|
||||||
): readonly FeedbackInteraction[] {
|
) {
|
||||||
if (!enabled || !feed) {
|
if (!enabled || !feed) {
|
||||||
return []
|
return false
|
||||||
}
|
}
|
||||||
return isDiscover ? ALL_FEEDBACK_INTERACTIONS : DIRECT_FEEDBACK_INTERACTIONS
|
const isDiscover = isDiscoverFeed(feed.feedDescriptor)
|
||||||
|
return isDiscover ? true : DIRECT_FEEDBACK_INTERACTIONS.has(interaction)
|
||||||
}
|
}
|
||||||
|
|
||||||
function toString(interaction: AppBskyFeedDefs.Interaction): string {
|
function toString(interaction: AppBskyFeedDefs.Interaction): string {
|
||||||
|
|||||||
Reference in New Issue
Block a user