Cleanup timeout before unmount.

pull/21833/head
Richard Lewis 2018-03-09 21:12:56 +00:00
parent a33859326e
commit 7e062090de
2 changed files with 15 additions and 1 deletions

View File

@ -204,6 +204,12 @@ export default class extends React.Component {
this.unmounted = true;
dis.unregister(this.dispatcherRef);
this.context.matrixClient.removeListener('sync', this.onClientSync);
this._afterComponentWillUnmount();
}
// To be overridden by subclasses (e.g. MStickerBody) for further
// cleanup after componentWillUnmount
_afterComponentWillUnmount() {
}
onAction(payload) {

View File

@ -43,12 +43,13 @@ export default class MStickerBody extends MImageBody {
this.setState({
placeholderClasses: 'mx_MStickerBody_placeholder_invisible',
});
setTimeout(() => {
const hidePlaceholderTimer = setTimeout(() => {
this.setState({
placeholderVisible: false,
thumbnailClasses: 'mx_MStickerBody_thumbnail_visible',
});
}, 500);
this.setState({hidePlaceholderTimer});
}
_afterComponentDidMount() {
@ -69,6 +70,13 @@ export default class MStickerBody extends MImageBody {
}
}
_afterComponentWillUnmount() {
if (this.state.hidePlaceholderTimer) {
clearTimeout(this.state.hidePlaceholderTimer);
this.setState({hidePlaceholderTimer: null});
}
}
_messageContent(contentUrl, thumbUrl, content) {
let tooltip;
const tooltipBody = (