From c553e589a5e7ea328af1f82ee5f91d95a8be31f2 Mon Sep 17 00:00:00 2001 From: web-admin Date: Tue, 22 Sep 2026 08:38:07 +0000 Subject: [PATCH] platform/lms-adm-fe release promotion snapshot --- src/lib/platforms.ts | 5 +++++ src/pages/platforms/PlatformsPage.tsx | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/lib/platforms.ts b/src/lib/platforms.ts index 15215de..b989864 100644 --- a/src/lib/platforms.ts +++ b/src/lib/platforms.ts @@ -1,4 +1,5 @@ export type InstructorPlatform = { + camera?: { url: string; password: string }; id: string; masterPlatformId: string; name: string; @@ -190,6 +191,8 @@ export async function updateInstructorPlatform( algorithms: PlatformAlgorithms, controlDurationMinutes: number, controlWarningMinutes: number, + cameraViewUrl: string, + cameraPassword: string, ): Promise { const response = await fetch(`${LMS_API_BASE_URL}/instructor/platforms/${platformId}`, { method: 'PUT', @@ -207,6 +210,8 @@ export async function updateInstructorPlatform( algorithms, controlDurationMinutes, controlWarningMinutes, + cameraViewUrl, + cameraPassword, }), }); diff --git a/src/pages/platforms/PlatformsPage.tsx b/src/pages/platforms/PlatformsPage.tsx index ac0caff..3201b63 100644 --- a/src/pages/platforms/PlatformsPage.tsx +++ b/src/pages/platforms/PlatformsPage.tsx @@ -86,6 +86,8 @@ export function PlatformsPage({ session }: { session: AuthSession }) { }); const [settingsControlDurationMinutes, setSettingsControlDurationMinutes] = useState(30); const [settingsControlWarningMinutes, setSettingsControlWarningMinutes] = useState(5); + const [settingsCameraUrl, setSettingsCameraUrl] = useState(''); + const [settingsCameraPassword, setSettingsCameraPassword] = useState(''); const [saving, setSaving] = useState(false); const [deletingPlatformId, setDeletingPlatformId] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); @@ -195,6 +197,8 @@ export function PlatformsPage({ session }: { session: AuthSession }) { setSettingsAlgorithms(settingsTarget?.algorithms ?? defaultAlgorithms); setSettingsControlDurationMinutes(settingsTarget?.controlDurationMinutes ?? 30); setSettingsControlWarningMinutes(settingsTarget?.controlWarningMinutes ?? 5); + setSettingsCameraUrl(settingsTarget?.camera?.url ?? ''); + setSettingsCameraPassword(settingsTarget?.camera?.password ?? ''); }, [settingsTarget]); const handlePageSizeChange = (nextPageSize: number) => { @@ -379,6 +383,8 @@ export function PlatformsPage({ session }: { session: AuthSession }) { settingsAlgorithms, settingsControlDurationMinutes, settingsControlWarningMinutes, + settingsCameraUrl, + settingsCameraPassword, ); applyPayload(payload); showToast({ title: '플랫폼 설정이 저장되었습니다.', message: nextName }); @@ -855,6 +861,19 @@ export function PlatformsPage({ session }: { session: AuthSession }) { + +
+ + setSettingsCameraUrl(event.target.value)} + placeholder="https://vdo.ninja/?scene&room=ROOM&view=STREAM" + className="h-10 w-full min-w-0 rounded-md border border-[#d1d9e6] px-3 text-[13px] outline-none focus:border-[#2563eb]" /> + + + setSettingsCameraPassword(event.target.value)} + className="h-10 w-full min-w-0 rounded-md border border-[#d1d9e6] px-3 text-[13px] outline-none focus:border-[#2563eb]" /> + +
+