Files
snort/packages/app/src/Feed/StatusFeed.ts

35 lines
924 B
TypeScript

import { unixNow } from "@snort/shared";
import { EventKind, RequestBuilder } from "@snort/system";
import { useRequestBuilder } from "@snort/system-react";
import { useMemo } from "react";
import { findTag } from "@/Utils";
export function useStatusFeed(id?: string, leaveOpen = false) {
const sub = useMemo(() => {
if (!id) return null;
const rb = new RequestBuilder(`statud:${id}`);
rb.withOptions({ leaveOpen });
rb.withFilter()
.kinds([30315 as EventKind])
.authors([id]);
return rb;
}, [id]);
const status = useRequestBuilder(sub);
const statusFiltered = status.data?.filter(a => {
const exp = Number(findTag(a, "expiration"));
return isNaN(exp) || exp >= unixNow();
});
const general = statusFiltered?.find(a => findTag(a, "d") === "general");
const music = statusFiltered?.find(a => findTag(a, "d") === "music");
return {
general,
music,
};
}