@klevu/core
Version:
Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.
43 lines (42 loc) • 1.27 kB
JavaScript
import { KlevuDomEvents } from "../events/KlevuDomEvents.js";
import { KlevuStorage, isBrowser } from "../utils/index.js";
const SAVE_KEY = "klevu-last-searches";
let lastSearches = [];
if (isBrowser()) {
const res = KlevuStorage.getItem(SAVE_KEY);
if (res) {
lastSearches = JSON.parse(res);
}
}
const MAX_COUNT = 5;
export const KlevuLastSearches = {
/**
* Saves last searched term. If there is previous it's moved to as last item
*
* @param term searched term
*/
save: (term) => {
const lastIndex = lastSearches.findIndex((ls) => ls.term === term);
if (lastIndex > -1) {
lastSearches.splice(lastIndex, 1);
}
lastSearches.push({
timestamp: new Date().getTime(),
term: term,
});
if (lastSearches.length > MAX_COUNT * 2) {
lastSearches = lastSearches.slice(MAX_COUNT * -2);
}
if (isBrowser()) {
document.dispatchEvent(new CustomEvent(KlevuDomEvents.LastSearchUpdate));
KlevuStorage.setItem(SAVE_KEY, JSON.stringify(lastSearches));
}
},
/**
*
* @returns five latests searches
*/
get: () => {
return lastSearches.slice(MAX_COUNT * -1);
},
};