[angular-18 | DONE | FIXED]: natural-language-search.component.ts: Commented subscriptions and added nlSearchSubscription, to unsubscribe on every new request (if a new question responds before the previous question, then we would get not matching question-response or both (error case) at the same time).

This commit is contained in:
Konstantina Galouni 2024-09-30 21:07:35 +03:00
parent fe792691a5
commit ec2a7fbda1
1 changed files with 15 additions and 8 deletions

View File

@ -11,7 +11,8 @@ import {properties} from "../../environments/environment";
}) })
export class NaturalLanguageSearchComponent { export class NaturalLanguageSearchComponent {
private subscriptions = []; // private subscriptions = [];
private nlSearchSubscription = null;
properties: EnvProperties = properties; properties: EnvProperties = properties;
showLoading: boolean = false; showLoading: boolean = false;
errorMessage: string; errorMessage: string;
@ -25,18 +26,24 @@ export class NaturalLanguageSearchComponent {
} }
ngOnDestroy() { ngOnDestroy() {
this.subscriptions.forEach(subscription => { // this.subscriptions.forEach(subscription => {
if (subscription instanceof Subscriber) { // if (subscription instanceof Subscriber) {
subscription.unsubscribe(); // subscription.unsubscribe();
// }
// });
if (this.nlSearchSubscription instanceof Subscriber) {
this.nlSearchSubscription.unsubscribe();
} }
});
} }
search() { search() {
this.queryPhrase = this.phrase; this.queryPhrase = this.phrase;
this.errorMessage = null; this.errorMessage = null;
this.showLoading = true; this.showLoading = true;
this.subscriptions.push(this.naturalLanguageSearchService.getResults(this.properties.naturalLanguageSearchAPI, this.queryPhrase).subscribe(data => { if(this.nlSearchSubscription) {
this.nlSearchSubscription.unsubscribe();
}
this.nlSearchSubscription = this.naturalLanguageSearchService.getResults(this.properties.naturalLanguageSearchAPI, this.queryPhrase).subscribe(data => {
if(data && data['columns']) { if(data && data['columns']) {
for(let i = 0; i < data['columns'].length - 1; i++) { for(let i = 0; i < data['columns'].length - 1; i++) {
if(data['columns'][i] == 'id') { if(data['columns'][i] == 'id') {
@ -54,6 +61,6 @@ export class NaturalLanguageSearchComponent {
this.errorMessage = 'Sorry, something went wrong. Please try again later.'; this.errorMessage = 'Sorry, something went wrong. Please try again later.';
} }
this.showLoading = false; this.showLoading = false;
})); });
} }
} }