Live video on the AT Protocol
1import { AppBskyActorDefs } from "@atproto/api";
2import {
3 ChatMessageViewHydrated,
4 LivestreamViewHydrated,
5 PlaceStreamDefs,
6 PlaceStreamLiveTeleport,
7 PlaceStreamModerationPermission,
8 PlaceStreamSegment,
9} from "streamplace";
10
11export interface LivestreamState {
12 profile: AppBskyActorDefs.ProfileViewBasic | null;
13 chatIndex: { [key: string]: ChatMessageViewHydrated };
14 chat: ChatMessageViewHydrated[];
15 authors: { [key: string]: ChatMessageViewHydrated["chatProfile"] };
16 livestream: LivestreamViewHydrated | null;
17 viewers: number | null;
18 pendingHides: string[];
19 segment: PlaceStreamSegment.Record | null;
20 recentSegments: PlaceStreamSegment.Record[];
21 problems: LivestreamProblem[];
22 renditions: PlaceStreamDefs.Rendition[];
23 replyToMessage: ChatMessageViewHydrated | null;
24 streamKey: string | null;
25 setStreamKey: (key: string | null) => void;
26 activeTeleport: PlaceStreamLiveTeleport.Record | null;
27 activeTeleportUri: string | null;
28 setActiveTeleportUri: (uri: string | null) => void;
29 websocketConnected: boolean;
30 hasReceivedSegment: boolean;
31 moderationPermissions: PlaceStreamModerationPermission.Record[];
32 setModerationPermissions: (
33 permissions: PlaceStreamModerationPermission.Record[],
34 ) => void;
35}
36
37export interface LivestreamProblem {
38 code: string;
39 message: string;
40 severity: "error" | "warning" | "info";
41 link?: string;
42}