Add context menu sharing handlers
[arvados-workbench2.git] / src / services / search-service / search-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { SearchBarAdvanceFormData } from '~/models/search-bar';
6
7 export class SearchService {
8     private recentQueries: string[] = this.getRecentQueries();
9     private savedQueries: SearchBarAdvanceFormData[] = this.getSavedQueries();
10
11     saveRecentQuery(query: string) {
12         if (this.recentQueries.length >= MAX_NUMBER_OF_RECENT_QUERIES) {
13             this.recentQueries.shift();
14             this.recentQueries.push(query);
15         } else {
16             this.recentQueries.push(query);
17         }
18         localStorage.setItem('recentQueries', JSON.stringify(this.recentQueries));
19     }
20
21     getRecentQueries() {
22         return JSON.parse(localStorage.getItem('recentQueries') || '[]') as string[];
23     }
24
25     saveQuery(data: SearchBarAdvanceFormData) {
26         this.savedQueries.push({...data});
27         localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
28     }
29
30     editSavedQueries(data: SearchBarAdvanceFormData) {
31         const itemIndex = this.savedQueries.findIndex(item => item.searchQuery === data.searchQuery);
32         this.savedQueries[itemIndex] = {...data};
33         localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
34     }
35
36     getSavedQueries() {
37         return JSON.parse(localStorage.getItem('savedQueries') || '[]') as SearchBarAdvanceFormData[];
38     }
39
40     deleteSavedQuery(id: number) {
41         this.savedQueries.splice(id, 1);
42         localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
43     }
44 }
45
46 const MAX_NUMBER_OF_RECENT_QUERIES = 5;