scroll to content on collab scene init (#1201)

This commit is contained in:
David Luzar 2020-04-03 21:22:26 +02:00 committed by GitHub
parent 036978b837
commit 3afb4515b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,6 +35,7 @@ import {
getSelectedElements, getSelectedElements,
globalSceneState, globalSceneState,
isSomeElementSelected, isSomeElementSelected,
calculateScrollCenter,
} from "../scene"; } from "../scene";
import { import {
decryptAESGEM, decryptAESGEM,
@ -743,9 +744,21 @@ export class App extends React.Component<any, AppState> {
const updateScene = ( const updateScene = (
decryptedData: SocketUpdateDataSource["SCENE_INIT" | "SCENE_UPDATE"], decryptedData: SocketUpdateDataSource["SCENE_INIT" | "SCENE_UPDATE"],
{ scrollToContent = false }: { scrollToContent?: boolean } = {},
) => { ) => {
const { elements: remoteElements } = decryptedData.payload; const { elements: remoteElements } = decryptedData.payload;
if (scrollToContent) {
this.setState({
...this.state,
...calculateScrollCenter(
remoteElements.filter((element) => {
return !element.isDeleted;
}),
),
});
}
// Perform reconciliation - in collaboration, if we encounter // Perform reconciliation - in collaboration, if we encounter
// elements with more staler versions than ours, ignore them // elements with more staler versions than ours, ignore them
// and keep ours. // and keep ours.
@ -853,7 +866,7 @@ export class App extends React.Component<any, AppState> {
return; return;
case "SCENE_INIT": { case "SCENE_INIT": {
if (!this.socketInitialized) { if (!this.socketInitialized) {
updateScene(decryptedData); updateScene(decryptedData, { scrollToContent: true });
} }
break; break;
} }