Race condiition fixed for fix:9104

This commit is contained in:
Shivansh Kumar 2025-02-10 11:13:59 +05:30
parent 74b8f7ee26
commit 1053a51f64
2 changed files with 17 additions and 6 deletions

View file

@ -165,9 +165,7 @@ const ActiveRoomDialog = ({
onClick={() => {
trackEvent("share", "room closed");
collabAPI.stopCollaboration().then(() => {
if (!collabAPI.isCollaborating()) {
handleClose();
}
handleClose();
});
}}
/>

View file

@ -2250,7 +2250,7 @@ class App extends React.Component<AppProps, AppState> {
this.setState((state) => ({
...getDefaultAppState(),
isLoading: opts?.resetLoadingState ? false : state.isLoading,
theme: this.state.theme,
theme: state.theme,
}));
this.resetStore();
this.resetHistory();
@ -2874,8 +2874,21 @@ class App extends React.Component<AppProps, AppState> {
// init, which would trigger onChange with empty elements, which would then
// override whatever is in localStorage currently.
if (!this.state.isLoading) {
this.props.onChange?.(elements, this.state, this.files);
this.onChangeEmitter.trigger(elements, this.state, this.files);
// Only trigger onChange when there are actual changes to elements or important app state
const prevElements = this.scene.getElementsIncludingDeleted();
const hasElementChanges = elements.length !== prevElements.length ||
elements.some((element, index) => element !== prevElements[index]);
const hasImportantStateChanges =
this.state.selectedElementIds !== prevState.selectedElementIds ||
this.state.width !== prevState.width ||
this.state.height !== prevState.height ||
this.state.editingTextElement !== prevState.editingTextElement;
if (hasElementChanges || hasImportantStateChanges) {
this.props.onChange?.(elements, this.state, this.files);
this.onChangeEmitter.trigger(elements, this.state, this.files);
}
}
}