diff options
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/feed-feedback.tsx | 11 | ||||
-rw-r--r-- | src/state/persisted/schema.ts | 2 | ||||
-rw-r--r-- | src/state/preferences/trending.tsx | 20 | ||||
-rw-r--r-- | src/state/queries/feed.ts | 6 | ||||
-rw-r--r-- | src/state/queries/post-feed.ts | 3 |
5 files changed, 31 insertions, 11 deletions
diff --git a/src/state/feed-feedback.tsx b/src/state/feed-feedback.tsx index de5157a54..2ad5ff91a 100644 --- a/src/state/feed-feedback.tsx +++ b/src/state/feed-feedback.tsx @@ -7,7 +7,7 @@ import {FEEDBACK_FEEDS, STAGING_FEEDS} from '#/lib/constants' import {logEvent} from '#/lib/statsig/statsig' import {logger} from '#/logger' 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' type StateContext = { @@ -102,18 +102,15 @@ export function useFeedFeedback(feed: FeedDescriptor, hasSession: boolean) { if (!enabled) { return } - const slice = getFeedPostSlice(feedItem) - if (slice === null) { - return - } - for (const postItem of slice.items) { + const items = getItemsForFeedback(feedItem) + for (const {item: postItem, feedContext} of items) { if (!history.current.has(postItem)) { history.current.add(postItem) queue.current.add( toString({ item: postItem.uri, event: 'app.bsky.feed.defs#interactionSeen', - feedContext: slice.feedContext, + feedContext, }), ) sendToFeed() diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index 0a9e5b2c0..f840081f3 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -126,6 +126,7 @@ const schema = z.object({ /** @deprecated */ mutedThreads: z.array(z.string()), trendingDisabled: z.boolean().optional(), + trendingVideoDisabled: z.boolean().optional(), }) export type Schema = z.infer<typeof schema> @@ -172,6 +173,7 @@ export const defaults: Schema = { hasCheckedForStarterPack: false, subtitlesEnabled: true, trendingDisabled: false, + trendingVideoDisabled: false, } export function tryParse(rawData: string): Schema | undefined { diff --git a/src/state/preferences/trending.tsx b/src/state/preferences/trending.tsx index bf5d8f13c..87ec68771 100644 --- a/src/state/preferences/trending.tsx +++ b/src/state/preferences/trending.tsx @@ -4,18 +4,27 @@ import * as persisted from '#/state/persisted' type StateContext = { trendingDisabled: Exclude<persisted.Schema['trendingDisabled'], undefined> + trendingVideoDisabled: Exclude< + persisted.Schema['trendingVideoDisabled'], + undefined + > } type ApiContext = { setTrendingDisabled( hidden: Exclude<persisted.Schema['trendingDisabled'], undefined>, ): void + setTrendingVideoDisabled( + hidden: Exclude<persisted.Schema['trendingVideoDisabled'], undefined>, + ): void } const StateContext = React.createContext<StateContext>({ trendingDisabled: Boolean(persisted.defaults.trendingDisabled), + trendingVideoDisabled: Boolean(persisted.defaults.trendingVideoDisabled), }) const ApiContext = React.createContext<ApiContext>({ setTrendingDisabled() {}, + setTrendingVideoDisabled() {}, }) function usePersistedBooleanValue<T extends keyof persisted.Schema>(key: T) { @@ -43,14 +52,19 @@ function usePersistedBooleanValue<T extends keyof persisted.Schema>(key: T) { export function Provider({children}: React.PropsWithChildren<{}>) { const [trendingDisabled, setTrendingDisabled] = usePersistedBooleanValue('trendingDisabled') + const [trendingVideoDisabled, setTrendingVideoDisabled] = + usePersistedBooleanValue('trendingVideoDisabled') /* * Context */ - const state = React.useMemo(() => ({trendingDisabled}), [trendingDisabled]) + const state = React.useMemo( + () => ({trendingDisabled, trendingVideoDisabled}), + [trendingDisabled, trendingVideoDisabled], + ) const api = React.useMemo( - () => ({setTrendingDisabled}), - [setTrendingDisabled], + () => ({setTrendingDisabled, setTrendingVideoDisabled}), + [setTrendingDisabled, setTrendingVideoDisabled], ) return ( diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts index e5ce19a9a..500cfea54 100644 --- a/src/state/queries/feed.ts +++ b/src/state/queries/feed.ts @@ -48,6 +48,7 @@ export type FeedSourceFeedInfo = { creatorHandle: string likeCount: number | undefined likeUri: string | undefined + contentMode: AppBskyFeedDefs.GeneratorView['contentMode'] } export type FeedSourceListInfo = { @@ -65,6 +66,7 @@ export type FeedSourceListInfo = { description: RichText creatorDid: string creatorHandle: string + contentMode: undefined } export type FeedSourceInfo = FeedSourceFeedInfo | FeedSourceListInfo @@ -111,6 +113,7 @@ export function hydrateFeedGenerator( creatorHandle: view.creator.handle, likeCount: view.likeCount, likeUri: view.viewer?.like, + contentMode: view.contentMode, } } @@ -141,6 +144,7 @@ export function hydrateList(view: AppBskyGraphDefs.ListView): FeedSourceInfo { displayName: view.name ? sanitizeDisplayName(view.name) : `User List by ${sanitizeHandle(view.creator.handle, '@')}`, + contentMode: undefined, } } @@ -399,6 +403,7 @@ const PWI_DISCOVER_FEED_STUB: SavedFeedSourceInfo = { id: 'pwi-discover', ...DISCOVER_SAVED_FEED, }, + contentMode: undefined, } const pinnedFeedInfosQueryKeyRoot = 'pinnedFeedsInfos' @@ -485,6 +490,7 @@ export function usePinnedFeedsInfos() { likeCount: 0, likeUri: '', savedFeed: pinnedItem, + contentMode: undefined, }) } } diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 2eb604627..6f9af18f0 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -44,7 +44,7 @@ import { } from './util' type ActorDid = string -type AuthorFilter = +export type AuthorFilter = | 'posts_with_replies' | 'posts_no_replies' | 'posts_and_author_threads' @@ -61,6 +61,7 @@ export type FeedDescriptor = export interface FeedParams { mergeFeedEnabled?: boolean mergeFeedSources?: string[] + feedCacheKey?: 'discover' | 'explore' | undefined } type RQPageParam = {cursor: string | undefined; api: FeedAPI} | undefined |