Improve the layouts on small mobile calls
Due to an oversight of mine, 2440037639 actually removed the ability to see the one-on-one layout on mobile. This restores mobile one-on-one calls to working order and also avoids showing the spotlight tile unless there are more than a few participants.
This commit is contained in:
@@ -46,6 +46,7 @@ import {
|
|||||||
shareReplay,
|
shareReplay,
|
||||||
skip,
|
skip,
|
||||||
startWith,
|
startWith,
|
||||||
|
switchAll,
|
||||||
switchMap,
|
switchMap,
|
||||||
throttleTime,
|
throttleTime,
|
||||||
timer,
|
timer,
|
||||||
@@ -75,6 +76,10 @@ import { duplicateTiles } from "../settings/settings";
|
|||||||
// list again
|
// list again
|
||||||
const POST_FOCUS_PARTICIPANT_UPDATE_DELAY_MS = 3000;
|
const POST_FOCUS_PARTICIPANT_UPDATE_DELAY_MS = 3000;
|
||||||
|
|
||||||
|
// This is the number of participants that we think constitutes a "small" call
|
||||||
|
// on mobile. No spotlight tile should be shown below this threshold.
|
||||||
|
const smallMobileCallThreshold = 3;
|
||||||
|
|
||||||
export interface GridLayout {
|
export interface GridLayout {
|
||||||
type: "grid";
|
type: "grid";
|
||||||
spotlight?: MediaViewModel[];
|
spotlight?: MediaViewModel[];
|
||||||
@@ -638,7 +643,20 @@ export class CallViewModel extends ViewModel {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
case "narrow":
|
case "narrow":
|
||||||
return this.spotlightPortraitLayout;
|
return this.oneOnOne.pipe(
|
||||||
|
switchMap((oneOnOne) =>
|
||||||
|
oneOnOne
|
||||||
|
? this.oneOnOneLayout
|
||||||
|
: combineLatest(
|
||||||
|
[this.grid, this.spotlight],
|
||||||
|
(grid, spotlight) =>
|
||||||
|
grid.length > smallMobileCallThreshold ||
|
||||||
|
spotlight.some((vm) => vm instanceof ScreenShareViewModel)
|
||||||
|
? this.spotlightPortraitLayout
|
||||||
|
: this.gridLayout,
|
||||||
|
).pipe(switchAll()),
|
||||||
|
),
|
||||||
|
);
|
||||||
case "flat":
|
case "flat":
|
||||||
return this.gridMode.pipe(
|
return this.gridMode.pipe(
|
||||||
switchMap((gridMode) => {
|
switchMap((gridMode) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user