You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
892 B
25 lines
892 B
/** |
|
* Standalone React context for feed state so HMR on `FeedProvider.tsx` does not recreate |
|
* `createContext()` (which breaks `useFeed` after Fast Refresh). |
|
*/ |
|
import { createContext, useContext } from 'react' |
|
|
|
export type TFeedContext = { |
|
/** Home Notes (OP): favorites plus Wisp trending only — no aggr, no FAST_READ padding. */ |
|
relayUrls: string[] |
|
/** |
|
* Home Replies + Gallery: same OP base, then NIP-65 read inboxes (FAST_READ when empty), kind 10432 cache |
|
* read relays, HTTP read index — never aggr (aggr is for side-panel threads, profiles, and spells only). |
|
*/ |
|
replyRelayUrls: string[] |
|
} |
|
|
|
export const FeedContext = createContext<TFeedContext | undefined>(undefined) |
|
|
|
export function useFeed(): TFeedContext { |
|
const context = useContext(FeedContext) |
|
if (!context) { |
|
throw new Error('useFeed must be used within a FeedProvider') |
|
} |
|
return context |
|
}
|
|
|