mirror of
https://github.com/vector-im/element-call.git
synced 2026-10-16 23:45:50 +00:00
flatten media api (no MemberMedia wrapper object
This commit is contained in:
@@ -7,7 +7,13 @@ Please see LICENSE in the repository root for full details.
|
||||
|
||||
import { logger } from "matrix-js-sdk/lib/logger";
|
||||
import { Status, type Transport } from "matrix-js-sdk/lib/matrixrtc";
|
||||
import { BehaviorSubject, type Observable, Subject, throwError } from "rxjs";
|
||||
import {
|
||||
BehaviorSubject,
|
||||
EMPTY,
|
||||
type Observable,
|
||||
Subject,
|
||||
throwError,
|
||||
} from "rxjs";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
import { defaultSessionTimings } from "../config";
|
||||
@@ -192,7 +198,8 @@ function fakeLocalMediaBackend(): FakeLocalMediaBackend {
|
||||
connectionState$: new BehaviorSubject<MediaConnectionState | Error>(
|
||||
MediaConnectionState.Initialized,
|
||||
),
|
||||
media$: new BehaviorSubject(null),
|
||||
tracks$: new BehaviorSubject(null),
|
||||
encryptionError$: EMPTY,
|
||||
setPublishing: vi.fn<LocalMediaBackend["setPublishing"]>(),
|
||||
publishError$: new BehaviorSubject<Error | null>(null),
|
||||
publish: vi.fn<LocalMediaBackend["publish"]>(),
|
||||
|
||||
@@ -16,8 +16,10 @@ import {
|
||||
type RemoteRTCMember,
|
||||
type RTCMember,
|
||||
} from "../api";
|
||||
import { type MemberMedia } from "../media-api";
|
||||
import { type LocalMediaBackend } from "../media-backend/api";
|
||||
import {
|
||||
type LocalMediaBackend,
|
||||
type MemberMediaFields,
|
||||
} from "../media-backend/api";
|
||||
import { type TransportRegistry } from "./Transports";
|
||||
|
||||
/** What every member is built from, besides its own membership and media. */
|
||||
@@ -41,26 +43,31 @@ export function membershipKeys(
|
||||
export function createRemoteRTCMember(
|
||||
scope: ObservableScope,
|
||||
membership$: Behavior<CallMembership>,
|
||||
media$: Behavior<MemberMedia | null>,
|
||||
media: MemberMediaFields,
|
||||
context: MemberContext,
|
||||
): RemoteRTCMember {
|
||||
return {
|
||||
...createRTCMember(scope, membership$, context),
|
||||
local: false,
|
||||
media$,
|
||||
tracks$: media.tracks$,
|
||||
encryptionError$: media.encryptionError$,
|
||||
};
|
||||
}
|
||||
|
||||
export function createLocalRTCMember(
|
||||
scope: ObservableScope,
|
||||
membership$: Behavior<CallMembership>,
|
||||
local: Pick<LocalMediaBackend, "media$" | "publish" | "unpublish">,
|
||||
local: Pick<
|
||||
LocalMediaBackend,
|
||||
"tracks$" | "encryptionError$" | "publish" | "unpublish"
|
||||
>,
|
||||
context: MemberContext,
|
||||
): LocalRTCMember {
|
||||
return {
|
||||
...createRTCMember(scope, membership$, context),
|
||||
local: true,
|
||||
media$: local.media$,
|
||||
tracks$: local.tracks$,
|
||||
encryptionError$: local.encryptionError$,
|
||||
publish: async (request) => local.publish(request),
|
||||
unpublish: async (id) => local.unpublish(id),
|
||||
};
|
||||
@@ -70,7 +77,7 @@ function createRTCMember(
|
||||
scope: ObservableScope,
|
||||
membership$: Behavior<CallMembership>,
|
||||
{ metadata, transports }: MemberContext,
|
||||
): Omit<RTCMember, "local" | "media$"> {
|
||||
): Omit<RTCMember, "local" | "tracks$" | "encryptionError$"> {
|
||||
const { userId, deviceId, rtcBackendIdentity } = membership$.value;
|
||||
return {
|
||||
id: rtcBackendIdentity,
|
||||
|
||||
Reference in New Issue
Block a user