mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-21 00:28:08 +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
|
// sharing, then return to grid, then manually go into spotlight, and
|
||||||
// remain in spotlight until we manually go back to grid
|
// remain in spotlight until we manually go back to grid
|
||||||
const laytMarbles = "ab(cc)(dd)ae(bb)(ee)a 59979ms a";
|
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(
|
withCallViewModel(
|
||||||
helpers,
|
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(
|
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(),
|
this.scope.state(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user