mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-24 00:38:31 +08:00
Show speaking indicators in spotlight during screen sharing
This commit is contained in:
parent
7edc8af9a0
commit
3a706ea3e0
@ -221,6 +221,9 @@ test("screen sharing activates spotlight layout", () => {
|
||||
// sharing, then return to grid, then manually go into spotlight, and
|
||||
// remain in spotlight until we manually go back to grid
|
||||
const laytMarbles = "ab(cc)(dd)ae(bb)(ee)a 59979ms a";
|
||||
// Speaking indicators should always be shown except for when the active
|
||||
// speaker is present in the spotlight
|
||||
const showMarbles = "y----------ny---n---y";
|
||||
|
||||
withCallViewModel(
|
||||
helpers,
|
||||
@ -270,6 +273,10 @@ test("screen sharing activates spotlight layout", () => {
|
||||
},
|
||||
},
|
||||
);
|
||||
expectObservable(vm.showSpeakingIndicators).toBe(showMarbles, {
|
||||
y: true,
|
||||
n: false,
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
|
@ -714,7 +714,21 @@ export class CallViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public showSpeakingIndicators: Observable<boolean> = this.layout.pipe(
|
||||
map((l) => l.type !== "one-on-one" && !l.type.startsWith("spotlight-")),
|
||||
map((l) => {
|
||||
switch (l.type) {
|
||||
case "spotlight-landscape":
|
||||
case "spotlight-portrait":
|
||||
// If the spotlight is showing the active speaker, we can do without
|
||||
// speaking indicators as they're a redundant visual cue. But if
|
||||
// screen sharing feeds are in the spotlight we still need them.
|
||||
return l.spotlight[0] instanceof ScreenShareViewModel;
|
||||
case "spotlight-expanded":
|
||||
case "one-on-one":
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}),
|
||||
this.scope.state(),
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user