|
|
|
@ -166,7 +166,7 @@ const gesture: Gesture = {
|
|
|
|
|
class App extends React.Component<any, AppState> {
|
|
|
|
|
canvas: HTMLCanvasElement | null = null;
|
|
|
|
|
rc: RoughCanvas | null = null;
|
|
|
|
|
portal: Portal = new Portal();
|
|
|
|
|
portal: Portal = new Portal(this);
|
|
|
|
|
lastBroadcastedOrReceivedSceneVersion: number = -1;
|
|
|
|
|
removeSceneCallback: SceneStateCallbackRemover | null = null;
|
|
|
|
|
|
|
|
|
@ -915,19 +915,7 @@ class App extends React.Component<any, AppState> {
|
|
|
|
|
roomMatch[2],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
this.portal.socket!.on("init-room", () => {
|
|
|
|
|
if (this.portal.socket) {
|
|
|
|
|
const username = restoreUsernameFromLocalStorage();
|
|
|
|
|
|
|
|
|
|
this.portal.socket.emit("join-room", this.portal.roomID);
|
|
|
|
|
|
|
|
|
|
if (username !== null) {
|
|
|
|
|
this.setState({
|
|
|
|
|
username,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// All socket listeners are moving to Portal
|
|
|
|
|
this.portal.socket!.on(
|
|
|
|
|
"client-broadcast",
|
|
|
|
|
async (encryptedData: ArrayBuffer, iv: Uint8Array) => {
|
|
|
|
@ -999,9 +987,6 @@ class App extends React.Component<any, AppState> {
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.portal.socket!.on("new-user", async (_socketID: string) => {
|
|
|
|
|
this.broadcastScene(SCENE.INIT);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.setState({
|
|
|
|
|
isCollaborating: true,
|
|
|
|
@ -1032,7 +1017,8 @@ class App extends React.Component<any, AppState> {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
private broadcastScene = (sceneType: SCENE.INIT | SCENE.UPDATE) => {
|
|
|
|
|
// maybe should move to Portal
|
|
|
|
|
broadcastScene = (sceneType: SCENE.INIT | SCENE.UPDATE) => {
|
|
|
|
|
const data: SocketUpdateDataSource[typeof sceneType] = {
|
|
|
|
|
type: sceneType,
|
|
|
|
|
payload: {
|
|
|
|
@ -1059,6 +1045,16 @@ class App extends React.Component<any, AppState> {
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
restoreUserName() {
|
|
|
|
|
const username = restoreUsernameFromLocalStorage();
|
|
|
|
|
|
|
|
|
|
if (username !== null) {
|
|
|
|
|
this.setState({
|
|
|
|
|
username,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Input handling
|
|
|
|
|
|
|
|
|
|
private onKeyDown = withBatchedUpdates((event: KeyboardEvent) => {
|
|
|
|
|