feat(mobile): add support for huddles to mobile app (#219)
* feat(mobile): add huddles with LiveKit Mirrors the desktop huddle window: tap the headphones button on a stream to fetch a LiveKit token from Orion and join a video room. Active huddles show a red badge on the stream card (participant count) and a red Join pill in the stream top bar — both driven by huddle_active_participants synced from the LiveKit webhook. The HuddleScreen lives at its own route (not a modal/window): video tile grid with placeholders for camera-off, mic/camera toggles, and a leave button. Adds the LiveKit RN SDK plus the WebRTC + LiveKit Expo config plugins for prebuild. https://claude.ai/code/session_01Po5tAD17MXhnqGQ9hKh6PC * fix(mobile): exiting from huddle * fix: pause stream during huddle --------- Co-authored-by: Claude <[email protected]>
This commit was merged in pull request #219.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { memo, useMemo } from "react";
|
||||
import { Pressable, Text, View } from "react-native";
|
||||
import { Headphones } from "lucide-react-native";
|
||||
import type { Particle, StreamProperties } from "@/api/types";
|
||||
import { isParticleDeleted } from "@/api/types";
|
||||
import { RelativeTimestamp } from "@/components/RelativeTimestamp";
|
||||
@@ -147,7 +148,14 @@ export const StreamCard = memo(function StreamCard({
|
||||
)}
|
||||
/>
|
||||
) : null}
|
||||
{isUnseen ? (
|
||||
{(particle.huddle_active_participants?.length ?? 0) > 0 ? (
|
||||
<View className="flex-row items-center gap-1 rounded-full bg-red-500/15 px-1.5 py-0.5">
|
||||
<Headphones color="#ef4444" size={11} />
|
||||
<Text className="text-red-500 text-[10px] font-semibold">
|
||||
{particle.huddle_active_participants?.length}
|
||||
</Text>
|
||||
</View>
|
||||
) : isUnseen ? (
|
||||
<View className="bg-primary h-2 w-2 rounded-full" />
|
||||
) : null}
|
||||
</View>
|
||||
|
||||
Reference in New Issue
Block a user