//
// SPDX-License-Identifier: AGPL-3.0
+import { SearchBarAdvancedFormData } from '~/models/search-bar';
+
export class SearchService {
- private recentQueries: string[] = this.getRecentQueries();
- private savedQueries: string[] = this.getSavedQueries();
+ private recentQueries = this.getRecentQueries();
+ private savedQueries: SearchBarAdvancedFormData[] = this.getSavedQueries();
saveRecentQuery(query: string) {
- if (this.recentQueries.length >= 5) {
+ if (this.recentQueries.length >= MAX_NUMBER_OF_RECENT_QUERIES) {
this.recentQueries.shift();
- this.recentQueries.push(query);
- } else {
- this.recentQueries.push(query);
}
+ this.recentQueries.push(query);
localStorage.setItem('recentQueries', JSON.stringify(this.recentQueries));
}
- getRecentQueries() {
- return JSON.parse(localStorage.getItem('recentQueries') || '[]') as string[];
+ getRecentQueries(): string[] {
+ return JSON.parse(localStorage.getItem('recentQueries') || '[]');
}
- saveQuery(query: string) {
- this.savedQueries.push(query);
+ saveQuery(data: SearchBarAdvancedFormData) {
+ this.savedQueries.push({...data});
+ localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
+ }
+
+ editSavedQueries(data: SearchBarAdvancedFormData) {
+ const itemIndex = this.savedQueries.findIndex(item => item.queryName === data.queryName);
+ this.savedQueries[itemIndex] = {...data};
localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
}
getSavedQueries() {
- return JSON.parse(localStorage.getItem('savedQueries') || '[]') as string[];
+ return JSON.parse(localStorage.getItem('savedQueries') || '[]') as SearchBarAdvancedFormData[];
}
deleteSavedQuery(id: number) {
this.savedQueries.splice(id, 1);
localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
}
-}
\ No newline at end of file
+}
+
+const MAX_NUMBER_OF_RECENT_QUERIES = 5;