diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-05-06 19:08:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-07 03:08:33 +0100 |
commit | 4fad18b2fa3c12ffdf1d49afac5228f7df658bc2 (patch) | |
tree | 8fa8df48dcf544c288bc0618127fcead58014962 /src/state/queries | |
parent | e264dfbb875118036d5b155f46f2b0b71261e1ff (diff) | |
download | voidsky-4fad18b2fa3c12ffdf1d49afac5228f7df658bc2.tar.zst |
Implement FeedFeedback API (#3498)
* Implement onViewableItemsChanged on List.web.tsx * Introduce onItemSeen to List API * Add FeedFeedback tracker * Add clickthrough interaction tracking * Add engagement interaction tracking * Reduce duplicate sends, introduce a flushAndReset to be triggered on refreshes, and modify the api design a bit * Wire up SDK types and feedContext * Avoid needless function allocations * Fix schema usage * Add show more / show less buttons * Fix minor rendering issue on mobile menu * Wire up sendInteractions() * Fix logic error * Fix: it's item not uri * Update 'seen' to mean 3 seconds on-screen with some significant portion visible * Fix non-reactive debounce * Move methods out * Use a WeakSet for deduping * Reset timeout * 3 -> 2 seconds * Oopsie * Throttle instead * Fix divider * Remove explicit flush calls * Rm unused --------- Co-authored-by: dan <dan.abramov@gmail.com>
Diffstat (limited to 'src/state/queries')
-rw-r--r-- | src/state/queries/post-feed.ts | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 827f8a2a8..dc86a9ba0 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -70,10 +70,12 @@ export interface FeedPostSliceItem { post: AppBskyFeedDefs.PostView record: AppBskyFeedPost.Record reason?: AppBskyFeedDefs.ReasonRepost | ReasonFeedSource + feedContext: string | undefined moderation: ModerationDecision } export interface FeedPostSlice { + _isFeedPostSlice: boolean _reactKey: string rootUri: string isThread: boolean @@ -276,6 +278,7 @@ export function usePostFeedQuery( return { _reactKey: slice._reactKey, + _isFeedPostSlice: true, rootUri: slice.rootItem.post.uri, isThread: slice.items.length > 1 && @@ -300,6 +303,7 @@ export function usePostFeedQuery( i === 0 && slice.source ? slice.source : item.reason, + feedContext: item.feedContext, moderation: moderations[i], } } @@ -507,3 +511,9 @@ export function resetProfilePostsQueries( }) }, timeout) } + +export function isFeedPostSlice(v: any): v is FeedPostSlice { + return ( + v && typeof v === 'object' && '_isFeedPostSlice' in v && v._isFeedPostSlice + ) +} |