@klevu/core
Version:
Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.
46 lines (45 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.KlevuLastSearches = void 0;
const KlevuDomEvents_js_1 = require("../events/KlevuDomEvents.js");
const index_js_1 = require("../utils/index.js");
const SAVE_KEY = "klevu-last-searches";
let lastSearches = [];
if ((0, index_js_1.isBrowser)()) {
const res = index_js_1.KlevuStorage.getItem(SAVE_KEY);
if (res) {
lastSearches = JSON.parse(res);
}
}
const MAX_COUNT = 5;
exports.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 ((0, index_js_1.isBrowser)()) {
document.dispatchEvent(new CustomEvent(KlevuDomEvents_js_1.KlevuDomEvents.LastSearchUpdate));
index_js_1.KlevuStorage.setItem(SAVE_KEY, JSON.stringify(lastSearches));
}
},
/**
*
* @returns five latests searches
*/
get: () => {
return lastSearches.slice(MAX_COUNT * -1);
},
};