* 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]>
79 lines
1.7 KiB
TypeScript
79 lines
1.7 KiB
TypeScript
import type { ExpoConfig } from "expo/config";
|
|
|
|
const APP_ENV = (process.env.EXPO_PUBLIC_APP_ENV ?? "dev") as "dev" | "prod";
|
|
|
|
const config: ExpoConfig = {
|
|
name: "Flowy",
|
|
slug: "flowy",
|
|
version: "0.1.0",
|
|
orientation: "portrait",
|
|
icon: "./assets/icon.png",
|
|
scheme: "flowy",
|
|
userInterfaceStyle: "dark",
|
|
newArchEnabled: true,
|
|
splash: {
|
|
image: "./assets/icon.png",
|
|
resizeMode: "contain",
|
|
backgroundColor: "#000000",
|
|
},
|
|
ios: {
|
|
supportsTablet: true,
|
|
bundleIdentifier: "ai.flowylabs.llink",
|
|
infoPlist: {
|
|
ITSAppUsesNonExemptEncryption: false,
|
|
},
|
|
},
|
|
plugins: [
|
|
[
|
|
"expo-build-properties",
|
|
{
|
|
ios: {
|
|
deploymentTarget: "16.0",
|
|
},
|
|
},
|
|
],
|
|
"expo-secure-store",
|
|
[
|
|
"expo-camera",
|
|
{
|
|
cameraPermission:
|
|
"Flowy uses your camera to record video messages.",
|
|
microphonePermission:
|
|
"Flowy uses your microphone to record voice and video messages.",
|
|
recordAudioAndroid: true,
|
|
},
|
|
],
|
|
[
|
|
"expo-audio",
|
|
{
|
|
microphonePermission:
|
|
"Flowy uses your microphone to record voice messages.",
|
|
},
|
|
],
|
|
[
|
|
"expo-notifications",
|
|
{
|
|
icon: "./assets/icon.png",
|
|
color: "#000000",
|
|
},
|
|
],
|
|
// LiveKit needs WebRTC native modules. The two plugins below patch the
|
|
// iOS/Android prebuild so camera/mic permissions and the webrtc pod are
|
|
// wired up correctly for huddles.
|
|
"@config-plugins/react-native-webrtc",
|
|
"@livekit/react-native-expo-plugin",
|
|
],
|
|
experiments: {
|
|
typedRoutes: false,
|
|
},
|
|
extra: {
|
|
eas: {
|
|
projectId: "e902f7e5-e514-42bd-9591-75738e3494ed"
|
|
},
|
|
|
|
appEnv: APP_ENV,
|
|
},
|
|
};
|
|
|
|
export default config;
|