This commit is contained in:
Shivansh Kumar 2025-05-01 19:56:05 +00:00 committed by GitHub
commit dcd010c475
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 13 deletions

View file

@ -352,13 +352,14 @@ class Collab extends PureComponent<CollabProps, CollabState> {
}
};
stopCollaboration = (keepRemoteState = true) => {
stopCollaboration = async (keepRemoteState = true) => {
this.queueBroadcastAllElements.cancel();
this.queueSaveToFirebase.cancel();
this.loadImageFiles.cancel();
this.resetErrorIndicator(true);
this.saveCollabRoomToFirebase(
// Ensure we save the latest state before stopping collaboration
await this.saveCollabRoomToFirebase(
getSyncableElements(
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
),
@ -379,6 +380,9 @@ class Collab extends PureComponent<CollabProps, CollabState> {
// that could have been saved in other tabs while we were collaborating
resetBrowserStateVersions();
// Ensure all pending changes are saved before pushing new state
this.queueSaveToFirebase.flush();
window.history.pushState({}, APP_NAME, window.location.origin);
this.destroySocketClient();
@ -950,9 +954,9 @@ class Collab extends PureComponent<CollabProps, CollabState> {
}, SYNC_FULL_SCENE_INTERVAL_MS);
queueSaveToFirebase = throttle(
() => {
async () => {
if (this.portal.socketInitialized) {
this.saveCollabRoomToFirebase(
await this.saveCollabRoomToFirebase(
getSyncableElements(
this.excalidrawAPI.getSceneElementsIncludingDeleted(),
),