mirror of
https://github.com/vector-im/element-call.git
synced 2026-07-12 18:39:19 +00:00
Handle no local media (yet)
This commit is contained in:
@@ -598,11 +598,6 @@ export class CallViewModel extends ViewModel {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
private readonly localUserMedia: Observable<LocalUserMediaViewModel> =
|
|
||||||
this.mediaItems.pipe(
|
|
||||||
map((ms) => ms.find((m) => m.vm.local)!.vm as LocalUserMediaViewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
private readonly screenShares: Observable<ScreenShare[]> =
|
private readonly screenShares: Observable<ScreenShare[]> =
|
||||||
this.mediaItems.pipe(
|
this.mediaItems.pipe(
|
||||||
map((mediaItems) =>
|
map((mediaItems) =>
|
||||||
@@ -699,12 +694,19 @@ export class CallViewModel extends ViewModel {
|
|||||||
speaker
|
speaker
|
||||||
? speaker.local
|
? speaker.local
|
||||||
? of(undefined)
|
? of(undefined)
|
||||||
: this.localUserMedia.pipe(
|
: this.mediaItems.pipe(
|
||||||
switchMap((vm) =>
|
switchMap((mediaItems) => {
|
||||||
vm.alwaysShow.pipe(
|
const localUserMedia = mediaItems.find(
|
||||||
map((alwaysShow) => (alwaysShow ? vm : undefined)),
|
(m) => m.vm instanceof LocalUserMediaViewModel,
|
||||||
),
|
) as LocalUserMediaViewModel | undefined;
|
||||||
),
|
return (
|
||||||
|
localUserMedia?.alwaysShow?.pipe(
|
||||||
|
map((alwaysShow) =>
|
||||||
|
alwaysShow ? localUserMedia : undefined,
|
||||||
|
),
|
||||||
|
) ?? of(undefined)
|
||||||
|
);
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
: of(undefined),
|
: of(undefined),
|
||||||
),
|
),
|
||||||
@@ -850,9 +852,17 @@ export class CallViewModel extends ViewModel {
|
|||||||
| RemoteUserMediaViewModel
|
| RemoteUserMediaViewModel
|
||||||
| undefined;
|
| undefined;
|
||||||
if (!local || !remote) {
|
if (!local || !remote) {
|
||||||
throw new Error(
|
logger.warn(
|
||||||
"Invalid state: there should be local and remote media for one-on-one layout",
|
`Falling back to grid layout for one-on-one layout with missing media: local=${!!local} remote=${!!remote}`,
|
||||||
);
|
);
|
||||||
|
return {
|
||||||
|
type: "grid",
|
||||||
|
grid: grid.filter(
|
||||||
|
(m) =>
|
||||||
|
m instanceof LocalUserMediaViewModel ||
|
||||||
|
m instanceof RemoteUserMediaViewModel,
|
||||||
|
),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
type: "one-on-one",
|
type: "one-on-one",
|
||||||
|
|||||||
Reference in New Issue
Block a user