summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/filtered_search/stores/recent_searches_store.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/filtered_search/stores/recent_searches_store.js')
-rw-r--r--app/assets/javascripts/filtered_search/stores/recent_searches_store.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/assets/javascripts/filtered_search/stores/recent_searches_store.js b/app/assets/javascripts/filtered_search/stores/recent_searches_store.js
new file mode 100644
index 00000000000..35fc15e4c87
--- /dev/null
+++ b/app/assets/javascripts/filtered_search/stores/recent_searches_store.js
@@ -0,0 +1,24 @@
+import _ from 'underscore';
+
+class RecentSearchesStore {
+ constructor(initialState = {}) {
+ this.state = Object.assign({
+ isLocalStorageAvailable: true,
+ recentSearches: [],
+ }, initialState);
+ }
+
+ addRecentSearch(newSearch) {
+ this.setRecentSearches([newSearch].concat(this.state.recentSearches));
+
+ return this.state.recentSearches;
+ }
+
+ setRecentSearches(searches = []) {
+ const trimmedSearches = searches.map(search => search.trim());
+ this.state.recentSearches = _.uniq(trimmedSearches).slice(0, 5);
+ return this.state.recentSearches;
+ }
+}
+
+export default RecentSearchesStore;