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>
This commit is contained in:
2025-09-04 12:21:51 -06:00
parent 41224a424c
commit 293f7d4f1f
20 changed files with 1254 additions and 293 deletions

View File

@@ -0,0 +1,29 @@
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;
}