mirror of
https://github.com/vector-im/element-call.git
synced 2026-09-22 22:29:30 +00:00
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
/*
|
|
Copyright 2026 Element Creations Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE in the repository root for full details.
|
|
*/
|
|
|
|
import { constant } from "../Behavior";
|
|
import { type BaseMediaViewModel } from "./MediaViewModel";
|
|
|
|
/**
|
|
* Media representing a LiveKit participant that cannot be mapped to any
|
|
* MatrixRTC member of the session.
|
|
*
|
|
* MSC4143 asks clients to surface such streams rather than silently ignore
|
|
* them, because they can signal an eavesdropping or impersonation attack. We
|
|
* therefore give them a tile, but never render their audio or video.
|
|
*
|
|
* There is no Matrix user behind this media, so `userId` and `displayName$`
|
|
* carry the LiveKit identity instead, purely so that debugging output stays
|
|
* meaningful.
|
|
*/
|
|
export interface UnknownParticipantMediaViewModel extends BaseMediaViewModel {
|
|
type: "unknown participant";
|
|
/**
|
|
* The LiveKit identity under which the participant connected. Exposed for
|
|
* debugging.
|
|
*/
|
|
rtcBackendIdentity: string;
|
|
/**
|
|
* The URL of the LiveKit focus on which the participant was seen. Exposed for
|
|
* debugging.
|
|
*/
|
|
focusUrl: string;
|
|
}
|
|
|
|
export interface UnknownParticipantMediaInputs {
|
|
id: string;
|
|
rtcBackendIdentity: string;
|
|
focusUrl: string;
|
|
}
|
|
|
|
export function createUnknownParticipantMedia({
|
|
id,
|
|
rtcBackendIdentity,
|
|
focusUrl,
|
|
}: UnknownParticipantMediaInputs): UnknownParticipantMediaViewModel {
|
|
return {
|
|
type: "unknown participant",
|
|
id,
|
|
userId: rtcBackendIdentity,
|
|
displayName$: constant(rtcBackendIdentity),
|
|
mxcAvatarUrl$: constant(undefined),
|
|
rtcBackendIdentity,
|
|
focusUrl,
|
|
};
|
|
}
|