mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-15 00:04:59 +08:00
Fix order of tiles in 1:1 layout
This commit is contained in:
parent
426e1a433b
commit
266861bdad
@ -603,26 +603,31 @@ function getSubGridPositions(
|
||||
return newTilePositions;
|
||||
}
|
||||
|
||||
function reorderTiles(tiles) {
|
||||
const focusedTiles = [];
|
||||
const presenterTiles = [];
|
||||
const otherTiles = [];
|
||||
function reorderTiles(tiles, layout) {
|
||||
if (layout === "freedom" && tiles.length === 2) {
|
||||
// 1:1 layout
|
||||
tiles.forEach((tile) => tile.order = tile.item.isLocal ? 0 : 1);
|
||||
} else {
|
||||
const focusedTiles = [];
|
||||
const presenterTiles = [];
|
||||
const otherTiles = [];
|
||||
|
||||
const orderedTiles = new Array(tiles.length);
|
||||
tiles.forEach((tile) => (orderedTiles[tile.order] = tile));
|
||||
const orderedTiles = new Array(tiles.length);
|
||||
tiles.forEach((tile) => (orderedTiles[tile.order] = tile));
|
||||
|
||||
orderedTiles.forEach((tile) =>
|
||||
(tile.focused
|
||||
? focusedTiles
|
||||
: tile.presenter
|
||||
? presenterTiles
|
||||
: otherTiles
|
||||
).push(tile)
|
||||
);
|
||||
orderedTiles.forEach((tile) =>
|
||||
(tile.focused
|
||||
? focusedTiles
|
||||
: tile.presenter
|
||||
? presenterTiles
|
||||
: otherTiles
|
||||
).push(tile)
|
||||
);
|
||||
|
||||
[...focusedTiles, ...presenterTiles, ...otherTiles].forEach(
|
||||
(tile, i) => (tile.order = i)
|
||||
);
|
||||
[...focusedTiles, ...presenterTiles, ...otherTiles].forEach(
|
||||
(tile, i) => (tile.order = i)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function VideoGrid({ items, layout, disableAnimations, children }) {
|
||||
@ -707,7 +712,7 @@ export function VideoGrid({ items, layout, disableAnimations, children }) {
|
||||
}
|
||||
}
|
||||
|
||||
reorderTiles(newTiles);
|
||||
reorderTiles(newTiles, layout);
|
||||
|
||||
if (removedTileKeys.size > 0) {
|
||||
setTimeout(() => {
|
||||
@ -719,7 +724,7 @@ export function VideoGrid({ items, layout, disableAnimations, children }) {
|
||||
const newTiles = tiles
|
||||
.filter((tile) => !removedTileKeys.has(tile.key))
|
||||
.map((tile) => ({ ...tile })); // clone before reordering
|
||||
reorderTiles(newTiles);
|
||||
reorderTiles(newTiles, layout);
|
||||
|
||||
const presenterTileCount = newTiles.reduce(
|
||||
(count, tile) => count + (tile.focused ? 1 : 0),
|
||||
@ -873,7 +878,7 @@ export function VideoGrid({ items, layout, disableAnimations, children }) {
|
||||
return newTile;
|
||||
});
|
||||
|
||||
reorderTiles(newTiles);
|
||||
reorderTiles(newTiles, layout);
|
||||
|
||||
return {
|
||||
...state,
|
||||
@ -974,7 +979,7 @@ export function VideoGrid({ items, layout, disableAnimations, children }) {
|
||||
return { ...tile, order, focused };
|
||||
});
|
||||
|
||||
reorderTiles(newTiles);
|
||||
reorderTiles(newTiles, layout);
|
||||
|
||||
setTileState((state) => ({ ...state, tiles: newTiles }));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user