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.handleDescriptionUpdate = this.handleDescriptionUpdate.bind(this);
this.handleTagsUpdated = this.handleTagsUpdated.bind(this); this.handleTagsUpdated = this.handleTagsUpdated.bind(this);
this.validateAlias = this.validateAlias.bind(this); this.validateAlias = this.validateAlias.bind(this);
this.cancelValidator = this.cancelValidator.bind(this);
} }
componentDidMount() { componentDidMount() {
@@ -90,6 +91,7 @@ class TopicDescEdit extends React.Component {
componentWillUnmount() { componentWillUnmount() {
const topic = this.props.tinode.getTopic(this.props.topic); const topic = this.props.tinode.getTopic(this.props.topic);
topic.onTagsUpdated = this.previousOnTags; topic.onTagsUpdated = this.previousOnTags;
this.cancelValidator();
} }
tnNewTags(tags) { tnNewTags(tags) {
@@ -187,11 +189,7 @@ class TopicDescEdit extends React.Component {
validateAlias(alias) { validateAlias(alias) {
// Reset pending delayed check. // Reset pending delayed check.
if (this.aliasCheckTimer) { this.cancelValidator();
this.aliasCheckPromise.reject(null);
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
}
if (!alias) { if (!alias) {
this.setState({aliasError: ''}); this.setState({aliasError: ''});
@@ -231,6 +229,15 @@ class TopicDescEdit extends React.Component {
return validationPromise; return validationPromise;
} }
cancelValidator() {
// Reset pending delayed check.
if (this.aliasCheckTimer) {
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
this.aliasCheckPromise.reject(null);
}
}
handleTagsUpdated(tags) { handleTagsUpdated(tags) {
// Check if tags have actually changed. // Check if tags have actually changed.
if (arrayEqual(this.state.tags.slice(0), tags.slice(0))) { if (arrayEqual(this.state.tags.slice(0), tags.slice(0))) {
+10 -5
View File
@@ -21139,6 +21139,7 @@ class TopicDescEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon
this.handleDescriptionUpdate = this.handleDescriptionUpdate.bind(this); this.handleDescriptionUpdate = this.handleDescriptionUpdate.bind(this);
this.handleTagsUpdated = this.handleTagsUpdated.bind(this); this.handleTagsUpdated = this.handleTagsUpdated.bind(this);
this.validateAlias = this.validateAlias.bind(this); this.validateAlias = this.validateAlias.bind(this);
this.cancelValidator = this.cancelValidator.bind(this);
} }
componentDidMount() { componentDidMount() {
const topic = this.props.tinode.getTopic(this.props.topic); const topic = this.props.tinode.getTopic(this.props.topic);
@@ -21148,6 +21149,7 @@ class TopicDescEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon
componentWillUnmount() { componentWillUnmount() {
const topic = this.props.tinode.getTopic(this.props.topic); const topic = this.props.tinode.getTopic(this.props.topic);
topic.onTagsUpdated = this.previousOnTags; topic.onTagsUpdated = this.previousOnTags;
this.cancelValidator();
} }
tnNewTags(tags) { tnNewTags(tags) {
this.setState({ this.setState({
@@ -21252,11 +21254,7 @@ class TopicDescEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon
this.handleTagsUpdated(tags); this.handleTagsUpdated(tags);
} }
validateAlias(alias) { validateAlias(alias) {
if (this.aliasCheckTimer) { this.cancelValidator();
this.aliasCheckPromise.reject(null);
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
}
if (!alias) { if (!alias) {
this.setState({ this.setState({
aliasError: '' aliasError: ''
@@ -21300,6 +21298,13 @@ class TopicDescEdit extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compon
}, ALIAS_AVAILABILITY_CHECK_DELAY); }, ALIAS_AVAILABILITY_CHECK_DELAY);
return validationPromise; return validationPromise;
} }
cancelValidator() {
if (this.aliasCheckTimer) {
clearTimeout(this.aliasCheckTimer);
this.aliasCheckTimer = null;
this.aliasCheckPromise.reject(null);
}
}
handleTagsUpdated(tags) { handleTagsUpdated(tags) {
if ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_9__.arrayEqual)(this.state.tags.slice(0), tags.slice(0))) { if ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_9__.arrayEqual)(this.state.tags.slice(0), tags.slice(0))) {
return; return;
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long