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/view/com/posts/FeedSlice.tsx | |
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/view/com/posts/FeedSlice.tsx')
-rw-r--r-- | src/view/com/posts/FeedSlice.tsx | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/view/com/posts/FeedSlice.tsx b/src/view/com/posts/FeedSlice.tsx index 49e48aa20..27a9ff8c0 100644 --- a/src/view/com/posts/FeedSlice.tsx +++ b/src/view/com/posts/FeedSlice.tsx @@ -1,14 +1,15 @@ import React, {memo} from 'react' import {StyleSheet, View} from 'react-native' -import {FeedPostSlice} from '#/state/queries/post-feed' +import Svg, {Circle, Line} from 'react-native-svg' import {AtUri} from '@atproto/api' +import {Trans} from '@lingui/macro' + +import {FeedPostSlice} from '#/state/queries/post-feed' +import {usePalette} from 'lib/hooks/usePalette' +import {makeProfileLink} from 'lib/routes/links' import {Link} from '../util/Link' import {Text} from '../util/text/Text' -import Svg, {Circle, Line} from 'react-native-svg' import {FeedItem} from './FeedItem' -import {usePalette} from 'lib/hooks/usePalette' -import {makeProfileLink} from 'lib/routes/links' -import {Trans} from '@lingui/macro' let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { if (slice.isThread && slice.items.length > 3) { @@ -20,6 +21,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { post={slice.items[0].post} record={slice.items[0].record} reason={slice.items[0].reason} + feedContext={slice.items[0].feedContext} moderation={slice.items[0].moderation} isThreadParent={isThreadParentAt(slice.items, 0)} isThreadChild={isThreadChildAt(slice.items, 0)} @@ -29,6 +31,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { post={slice.items[1].post} record={slice.items[1].record} reason={slice.items[1].reason} + feedContext={slice.items[1].feedContext} moderation={slice.items[1].moderation} isThreadParent={isThreadParentAt(slice.items, 1)} isThreadChild={isThreadChildAt(slice.items, 1)} @@ -39,6 +42,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { post={slice.items[last].post} record={slice.items[last].record} reason={slice.items[last].reason} + feedContext={slice.items[last].feedContext} moderation={slice.items[last].moderation} isThreadParent={isThreadParentAt(slice.items, last)} isThreadChild={isThreadChildAt(slice.items, last)} @@ -56,6 +60,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { post={slice.items[i].post} record={slice.items[i].record} reason={slice.items[i].reason} + feedContext={slice.items[i].feedContext} moderation={slice.items[i].moderation} isThreadParent={isThreadParentAt(slice.items, i)} isThreadChild={isThreadChildAt(slice.items, i)} |