snort/src/feed/TimelineFeed.js

27 lines
773 B
JavaScript
Raw Normal View History

2023-01-01 10:44:38 +00:00
import { useMemo } from "react";
2022-12-29 22:23:41 +00:00
import EventKind from "../nostr/EventKind";
import { Subscriptions } from "../nostr/Subscriptions";
2022-12-30 23:35:02 +00:00
import useSubscription from "./Subscription";
2022-12-18 14:51:47 +00:00
2023-01-02 11:59:03 +00:00
export default function useTimelineFeed(pubKeys, global = false) {
2022-12-30 23:35:02 +00:00
const sub = useMemo(() => {
2023-01-01 10:44:38 +00:00
if (!Array.isArray(pubKeys)) {
pubKeys = [pubKeys];
}
2023-01-02 11:59:03 +00:00
if (!global && (!pubKeys || pubKeys.length === 0)) {
2022-12-31 20:11:43 +00:00
return null;
}
2022-12-30 23:35:02 +00:00
let sub = new Subscriptions();
2023-01-01 10:44:38 +00:00
sub.Id = `timeline:${sub.Id}`;
2022-12-30 23:35:02 +00:00
sub.Authors = new Set(pubKeys);
sub.Kinds.add(EventKind.TextNote);
2023-01-01 10:44:38 +00:00
sub.Limit = 20;
2022-12-18 14:51:47 +00:00
2022-12-30 23:35:02 +00:00
return sub;
}, [pubKeys]);
2022-12-18 14:51:47 +00:00
2022-12-30 23:35:02 +00:00
const { notes } = useSubscription(sub, { leaveOpen: true });
2022-12-28 23:28:28 +00:00
return { notes };
2022-12-18 14:51:47 +00:00
}