fix(toast): prevent toast from re-rendering and resetting timeout Fixes #9714 (#9715)

* Update App.tsx

* fix: lint

---------

Co-authored-by: Ryan Di <ryan.weihao.di@gmail.com>
This commit is contained in:
Soham Kulkarni
2025-07-03 12:37:26 +05:30
committed by GitHub
parent 258605d1d5
commit 4eadb891f8

View File

@ -593,6 +593,10 @@ class App extends React.Component<AppProps, AppState> {
* insert to DOM before user initially scrolls to them) */ * insert to DOM before user initially scrolls to them) */
private initializedEmbeds = new Set<ExcalidrawIframeLikeElement["id"]>(); private initializedEmbeds = new Set<ExcalidrawIframeLikeElement["id"]>();
private handleToastClose = () => {
this.setToast(null);
};
private elementsPendingErasure: ElementsPendingErasure = new Set(); private elementsPendingErasure: ElementsPendingErasure = new Set();
public flowChartCreator: FlowChartCreator = new FlowChartCreator(); public flowChartCreator: FlowChartCreator = new FlowChartCreator();
@ -1707,14 +1711,16 @@ class App extends React.Component<AppProps, AppState> {
/> />
</ElementCanvasButtons> </ElementCanvasButtons>
)} )}
{this.state.toast !== null && ( {this.state.toast !== null && (
<Toast <Toast
message={this.state.toast.message} message={this.state.toast.message}
onClose={() => this.setToast(null)} onClose={this.handleToastClose}
duration={this.state.toast.duration} duration={this.state.toast.duration}
closable={this.state.toast.closable} closable={this.state.toast.closable}
/> />
)} )}
{this.state.contextMenu && ( {this.state.contextMenu && (
<ContextMenu <ContextMenu
items={this.state.contextMenu.items} items={this.state.contextMenu.items}