26 lines
731 B
TypeScript
26 lines
731 B
TypeScript
import { NostrStreamProvider, StreamProviderStore } from "@/providers";
|
|
import { ManualProvider } from "@/providers/manual";
|
|
import { findTag } from "@/utils";
|
|
import { NostrEvent } from "@snort/system";
|
|
import { useSyncExternalStore } from "react";
|
|
|
|
export function useStreamProvider() {
|
|
return useSyncExternalStore(
|
|
c => StreamProviderStore.hook(c),
|
|
() => StreamProviderStore.snapshot()
|
|
);
|
|
}
|
|
|
|
export function getCurrentStreamProvider(ev?: NostrEvent) {
|
|
const providers = StreamProviderStore.snapshot();
|
|
if (ev) {
|
|
const service = findTag(ev, "service");
|
|
if (service) {
|
|
return new NostrStreamProvider("", service);
|
|
} else {
|
|
return new ManualProvider();
|
|
}
|
|
}
|
|
return providers.at(0);
|
|
}
|