Files
reflector/www/app/lib/videoPlatforms/factory.ts
Mathieu Virbel 293f7d4f1f feat: implement frontend video platform configuration and abstraction
- Add NEXT_PUBLIC_VIDEO_PLATFORM environment variable support
- Create video platform abstraction layer with factory pattern
- Implement Whereby and Jitsi platform providers
- Update room meeting page to use platform-agnostic component
- Add platform display in room management (cards and table views)
- Support single platform per deployment configuration
- Maintain backward compatibility with existing Whereby integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 12:21:51 -06:00

30 lines
846 B
TypeScript

import { VideoPlatform } from "../../api";
import { VideoPlatformAdapter } from "./types";
import { localConfig } from "../../../config-template";
// Platform implementations
import { WherebyAdapter } from "./whereby/WherebyAdapter";
import { JitsiAdapter } from "./jitsi/JitsiAdapter";
const platformAdapters: Record<VideoPlatform, VideoPlatformAdapter> = {
whereby: WherebyAdapter,
jitsi: JitsiAdapter,
};
export function getVideoPlatformAdapter(
platform?: VideoPlatform,
): VideoPlatformAdapter {
const selectedPlatform = platform || localConfig.video_platform;
const adapter = platformAdapters[selectedPlatform];
if (!adapter) {
throw new Error(`Unsupported video platform: ${selectedPlatform}`);
}
return adapter;
}
export function getCurrentVideoPlatform(): VideoPlatform {
return localConfig.video_platform;
}