mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-26 16:34:22 +01:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			v0.14.0
			...
			aakansha-b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 68636236a1 | 
| @@ -52,7 +52,7 @@ export interface CollabAPI { | |||||||
|   onPointerUpdate: CollabInstance["onPointerUpdate"]; |   onPointerUpdate: CollabInstance["onPointerUpdate"]; | ||||||
|   initializeSocketClient: CollabInstance["initializeSocketClient"]; |   initializeSocketClient: CollabInstance["initializeSocketClient"]; | ||||||
|   onCollabButtonClick: CollabInstance["onCollabButtonClick"]; |   onCollabButtonClick: CollabInstance["onCollabButtonClick"]; | ||||||
|   broadcastElements: CollabInstance["broadcastElements"]; |   broadcastScene: CollabInstance["broadcastScene"]; | ||||||
| } | } | ||||||
|  |  | ||||||
| type ReconciledElements = readonly ExcalidrawElement[] & { | type ReconciledElements = readonly ExcalidrawElement[] & { | ||||||
| @@ -239,11 +239,9 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|               return; |               return; | ||||||
|             case SCENE.INIT: { |             case SCENE.INIT: { | ||||||
|               if (!this.portal.socketInitialized) { |               if (!this.portal.socketInitialized) { | ||||||
|                 const remoteElements = decryptedData.payload.elements; |                 const { elements, appState } = decryptedData.payload; | ||||||
|                 const reconciledElements = this.reconcileElements( |                 const reconciledElements = this.reconcileElements(elements); | ||||||
|                   remoteElements, |                 this.handleRemoteSceneUpdate(reconciledElements, appState, { | ||||||
|                 ); |  | ||||||
|                 this.handleRemoteSceneUpdate(reconciledElements, { |  | ||||||
|                   init: true, |                   init: true, | ||||||
|                 }); |                 }); | ||||||
|                 this.initializeSocket(); |                 this.initializeSocket(); | ||||||
| @@ -254,6 +252,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|             case SCENE.UPDATE: |             case SCENE.UPDATE: | ||||||
|               this.handleRemoteSceneUpdate( |               this.handleRemoteSceneUpdate( | ||||||
|                 this.reconcileElements(decryptedData.payload.elements), |                 this.reconcileElements(decryptedData.payload.elements), | ||||||
|  |                 decryptedData.payload.appState, | ||||||
|               ); |               ); | ||||||
|               break; |               break; | ||||||
|             case "MOUSE_LOCATION": { |             case "MOUSE_LOCATION": { | ||||||
| @@ -323,6 +322,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|  |  | ||||||
|   private handleRemoteSceneUpdate = ( |   private handleRemoteSceneUpdate = ( | ||||||
|     elements: ReconciledElements, |     elements: ReconciledElements, | ||||||
|  |     appState: AppState, | ||||||
|     { |     { | ||||||
|       init = false, |       init = false, | ||||||
|       initFromSnapshot = false, |       initFromSnapshot = false, | ||||||
| @@ -334,6 +334,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|  |  | ||||||
|     this.excalidrawRef.current!.updateScene({ |     this.excalidrawRef.current!.updateScene({ | ||||||
|       elements, |       elements, | ||||||
|  |       appState, | ||||||
|       commitToHistory: !!init, |       commitToHistory: !!init, | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
| @@ -383,22 +384,28 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|       this.portal.broadcastMouseLocation(payload); |       this.portal.broadcastMouseLocation(payload); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   broadcastElements = ( |   broadcastScene = ( | ||||||
|     elements: readonly ExcalidrawElement[], |     elements: readonly ExcalidrawElement[], | ||||||
|     state: AppState, |     state: AppState, | ||||||
|   ) => { |   ) => { | ||||||
|  |     const didBackgroundUpdate = | ||||||
|  |       this.excalidrawAppState?.viewBackgroundColor !== | ||||||
|  |       state.viewBackgroundColor; | ||||||
|     this.excalidrawAppState = state; |     this.excalidrawAppState = state; | ||||||
|     if ( |     if ( | ||||||
|       getSceneVersion(elements) > |       getSceneVersion(elements) > | ||||||
|       this.getLastBroadcastedOrReceivedSceneVersion() |         this.getLastBroadcastedOrReceivedSceneVersion() || | ||||||
|  |       didBackgroundUpdate | ||||||
|     ) { |     ) { | ||||||
|       this.portal.broadcastScene( |       this.portal.broadcastScene( | ||||||
|         SCENE.UPDATE, |         SCENE.UPDATE, | ||||||
|         getSyncableElements(elements), |         getSyncableElements(elements), | ||||||
|         false, |         false, | ||||||
|       ); |       ); | ||||||
|       this.lastBroadcastedOrReceivedSceneVersion = getSceneVersion(elements); |       if (!didBackgroundUpdate) { | ||||||
|       this.queueBroadcastAllElements(); |         this.lastBroadcastedOrReceivedSceneVersion = getSceneVersion(elements); | ||||||
|  |         this.queueBroadcastAllElements(); | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
| @@ -466,7 +473,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> { | |||||||
|           onPointerUpdate: this.onPointerUpdate, |           onPointerUpdate: this.onPointerUpdate, | ||||||
|           initializeSocketClient: this.initializeSocketClient, |           initializeSocketClient: this.initializeSocketClient, | ||||||
|           onCollabButtonClick: this.onCollabButtonClick, |           onCollabButtonClick: this.onCollabButtonClick, | ||||||
|           broadcastElements: this.broadcastElements, |           broadcastScene: this.broadcastScene, | ||||||
|         })} |         })} | ||||||
|       </> |       </> | ||||||
|     ); |     ); | ||||||
|   | |||||||
| @@ -111,6 +111,7 @@ class Portal { | |||||||
|       type: sceneType, |       type: sceneType, | ||||||
|       payload: { |       payload: { | ||||||
|         elements: syncableElements, |         elements: syncableElements, | ||||||
|  |         appState: this.app.excalidrawAppState!, | ||||||
|       }, |       }, | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -40,12 +40,14 @@ export type SocketUpdateDataSource = { | |||||||
|     type: "SCENE_INIT"; |     type: "SCENE_INIT"; | ||||||
|     payload: { |     payload: { | ||||||
|       elements: readonly ExcalidrawElement[]; |       elements: readonly ExcalidrawElement[]; | ||||||
|  |       appState: AppState; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|   SCENE_UPDATE: { |   SCENE_UPDATE: { | ||||||
|     type: "SCENE_UPDATE"; |     type: "SCENE_UPDATE"; | ||||||
|     payload: { |     payload: { | ||||||
|       elements: readonly ExcalidrawElement[]; |       elements: readonly ExcalidrawElement[]; | ||||||
|  |       appState: AppState; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|   MOUSE_LOCATION: { |   MOUSE_LOCATION: { | ||||||
|   | |||||||
| @@ -256,7 +256,7 @@ function ExcalidrawWrapper(props: { collab: CollabAPI }) { | |||||||
|   ) => { |   ) => { | ||||||
|     saveDebounced(elements, appState); |     saveDebounced(elements, appState); | ||||||
|     if (collab.isCollaborating) { |     if (collab.isCollaborating) { | ||||||
|       collab.broadcastElements(elements, appState); |       collab.broadcastScene(elements, appState); | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user