This implements the new ringing UI by showing a placeholder tile for the participant being dialed, rather than an overlay.
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
/*
|
|
Copyright 2023, 2024 New Vector Ltd.
|
|
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 { Track } from "livekit-client";
|
|
|
|
import { type ObservableScope } from "../ObservableScope";
|
|
import { type LocalScreenShareViewModel } from "./LocalScreenShareViewModel";
|
|
import {
|
|
createMemberMedia,
|
|
type MemberMediaInputs,
|
|
type BaseMemberMediaViewModel,
|
|
} from "./MemberMediaViewModel";
|
|
import { type RemoteScreenShareViewModel } from "./RemoteScreenShareViewModel";
|
|
|
|
/**
|
|
* A participant's screen share media.
|
|
*/
|
|
export type ScreenShareViewModel =
|
|
| LocalScreenShareViewModel
|
|
| RemoteScreenShareViewModel;
|
|
|
|
/**
|
|
* Properties which are common to all ScreenShareViewModels.
|
|
*/
|
|
export interface BaseScreenShareViewModel extends BaseMemberMediaViewModel {
|
|
type: "screen share";
|
|
}
|
|
|
|
export type BaseScreenShareInputs = Omit<
|
|
MemberMediaInputs,
|
|
"audioSource" | "videoSource"
|
|
>;
|
|
|
|
export function createBaseScreenShare(
|
|
scope: ObservableScope,
|
|
inputs: BaseScreenShareInputs,
|
|
): BaseScreenShareViewModel {
|
|
return {
|
|
...createMemberMedia(scope, {
|
|
...inputs,
|
|
audioSource: Track.Source.ScreenShareAudio,
|
|
videoSource: Track.Source.ScreenShare,
|
|
}),
|
|
type: "screen share",
|
|
};
|
|
}
|