clean up alias validator timer

This commit is contained in:
or-else
2025-04-23 21:09:47 +03:00
parent 14b38af8da
commit 04279395bc
5 changed files with 25 additions and 13 deletions
+12 -5
View File
@@ -79,6 +79,7 @@ class TopicDescEdit extends React.Component {
this.handleDescriptionUpdate = this.handleDescriptionUpdate.bind(this);
this.handleTagsUpdated = this.handleTagsUpdated.bind(this);
this.validateAlias = this.validateAlias.bind(this);
this.cancelValidator = this.cancelValidator.bind(this);
}
componentDidMount() {
@@ -90,6 +91,7 @@ class TopicDescEdit extends React.Component {
componentWillUnmount() {
const topic = this.props.tinode.getTopic(this.props.topic);
topic.onTagsUpdated = this.previousOnTags;
this.cancelValidator();
}
tnNewTags(tags) {
@@ -187,11 +189,7 @@ class TopicDescEdit extends React.Component {
validateAlias(alias) {
// Reset pending delayed check.
if (this.aliasCheckTimer) {
this.aliasCheckPromise.reject(null);
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
}
this.cancelValidator();
if (!alias) {
this.setState({aliasError: ''});
@@ -231,6 +229,15 @@ class TopicDescEdit extends React.Component {
return validationPromise;
}
cancelValidator() {
// Reset pending delayed check.
if (this.aliasCheckTimer) {
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
this.aliasCheckPromise.reject(null);
}
}
handleTagsUpdated(tags) {
// Check if tags have actually changed.
if (arrayEqual(this.state.tags.slice(0), tags.slice(0))) {