mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
The channel-profile grid fetched only kind-30078, so a creator's NIP-71 videos (incl. their Nostube cross-posts) appeared in the main feed via ingest but were absent from their profile wall. New js/channelProfileVideos.js: - buildChannelVideoFilters(pubkey): native (kind 30078, #t=video) + NIP-71 (kinds 21/22/34235/34236) filters for the author. - convertChannelEvent(entry): routes NIP-71 kinds through buildVideoFromNip71Event (which rejects bitvid's own outbound mirrors so they don't duplicate the canonical note); kind-30078 uses the standard converter. channelProfile.js now uses these (net fewer lines, stays under size cap). Existing buildRenderableChannelVideos dedupe-by-root + canAccess handle precedence and whitelist/blacklist gating, so foreign videos inherit the same gating as native ones. Closes pre-launch TODO 17b. Tests + mutation-verified (NIP-71 routing, mirror skip, dual-filter build). 1253/1254 unit (known UploadModal flake). Co-Authored-By: Claude Opus 4.8 <[email protected]>
30 lines
1.4 KiB
JavaScript
30 lines
1.4 KiB
JavaScript
// Channel-profile video sourcing: a creator's wall should show BOTH their
|
|
// bitvid-native kind-30078 videos AND the NIP-71 videos they published via other
|
|
// apps (Nostube etc.) — matching what the main feed shows via ingest. Previously
|
|
// the profile fetched only kind-30078, so cross-posted NIP-71 videos were absent.
|
|
|
|
import { convertEventToVideo as sharedConvertEventToVideo } from "./nostr/index.js";
|
|
import { buildVideoFromNip71Event, NIP71_KINDS } from "./nostr/nip71IngestAdapter.js";
|
|
|
|
// Two filters for one author: native video notes (kind 30078, tagged "video")
|
|
// and their NIP-71 videos (kinds 21/22/34235/34236).
|
|
export function buildChannelVideoFilters(pubkey, { limit = 200 } = {}) {
|
|
return [
|
|
{ kinds: [30078], authors: [pubkey], "#t": ["video"], limit },
|
|
{ kinds: Array.from(NIP71_KINDS), authors: [pubkey], limit },
|
|
];
|
|
}
|
|
|
|
// Convert a raw channel event to a bitvid video object. Foreign NIP-71 kinds go
|
|
// through the ingest adapter (which also rejects bitvid's own outbound mirrors so
|
|
// they don't duplicate the canonical kind-30078 note); everything else uses the
|
|
// standard kind-30078 converter. May return an { invalid: true } object — the
|
|
// caller filters those out (same contract as convertEventToVideo).
|
|
export function convertChannelEvent(entry) {
|
|
const kind = Number(entry?.kind);
|
|
if (NIP71_KINDS.has(kind)) {
|
|
return buildVideoFromNip71Event(entry);
|
|
}
|
|
return sharedConvertEventToVideo(entry);
|
|
}
|