{ "version": 3, "sources": ["../javascripts/actions/history.ts"], "sourcesContent": ["import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\nimport type { FilterHistory } from '../@types/FilterHistory';\nimport type { SearchHistory } from '../@types/SearchHistory';\nimport type { BaseAction } from '../@types/actions';\nimport QueryFilter from '../helpers/query-filter';\nimport type { RootState } from '../reducers';\n\nexport const REQ_SEARCH_HISTORY = 'REQ/SEARCH_HISTORY';\nexport type REQ_SEARCH_HISTORY_TYPE = BaseAction & {\n history: SearchHistory[];\n};\n\nexport type HISTORY_ACTION = REQ_SEARCH_HISTORY_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\nconst merge = (list: FilterHistory[]): SearchHistory[] => {\n const cache: { [key: string]: boolean } = {};\n\n return list\n .map((hit) => ({\n query: QueryFilter.create(hit.query)\n .removeAll(['page', 'offset', 'size', 'hits', 'sort'])\n .toString(),\n count: hit.count,\n createdAt: hit.createdAt,\n }))\n .filter((hit) => {\n if (cache[hit.query]) {\n return false;\n }\n\n cache[hit.query] = true;\n return true;\n });\n};\n\nconst localStorageKey = 'wayke-filter-history';\nexport const history =\n (queryFilter?: QueryFilter) => (dispatch: Dispatch, getState: () => RootState) => {\n try {\n const cleanQueryFilter =\n queryFilter && queryFilter.removeAll(['page', 'offset', 'size', 'hits', 'sort']);\n\n const { search } = getState();\n const query =\n cleanQueryFilter && !cleanQueryFilter.isEmpty() ? cleanQueryFilter.toString() : false;\n const persistance = merge(\n JSON.parse(localStorage.getItem(localStorageKey) || '[]') as FilterHistory[],\n );\n const index = persistance.findIndex((hit) => hit.query === query);\n\n if (search.documentList) {\n if (query && index < 0) {\n persistance.unshift({\n query,\n count: search.documentList.numberOfHits,\n createdAt: new Date().getTime(),\n });\n\n localStorage.setItem(localStorageKey, JSON.stringify(persistance.slice(0, 50)));\n } else if (\n query &&\n index >= 0 &&\n persistance[index].count !== search.documentList.numberOfHits\n ) {\n persistance[index] = {\n query,\n count: search.documentList.numberOfHits,\n createdAt: new Date().getTime(),\n };\n\n localStorage.setItem(localStorageKey, JSON.stringify(persistance.slice(0, 50)));\n }\n }\n dispatch({ type: REQ_SEARCH_HISTORY, history: persistance });\n } catch (_e) {\n dispatch({ type: REQ_SEARCH_HISTORY, history: [] });\n }\n };\n"], "mappings": "+CAOO,IAAMA,EAAqB,qBAS5BC,EAASC,GAA2C,CACxD,IAAMC,EAAoC,CAAC,EAE3C,OAAOD,EACJ,IAAKE,IAAS,CACb,MAAOC,EAAY,OAAOD,EAAI,KAAK,EAChC,UAAU,CAAC,OAAQ,SAAU,OAAQ,OAAQ,MAAM,CAAC,EACpD,SAAS,EACZ,MAAOA,EAAI,MACX,UAAWA,EAAI,SACjB,EAAE,EACD,OAAQA,GACHD,EAAMC,EAAI,KAAK,EACV,IAGTD,EAAMC,EAAI,KAAK,EAAI,GACZ,GACR,CACL,EAEME,EAAkB,uBACXC,EACVC,GAA8B,CAACC,EAAoBC,IAA8B,CAChF,GAAI,CACF,IAAMC,EACJH,GAAeA,EAAY,UAAU,CAAC,OAAQ,SAAU,OAAQ,OAAQ,MAAM,CAAC,EAE3E,CAAE,OAAAI,CAAO,EAAIF,EAAS,EACtBG,EACJF,GAAoB,CAACA,EAAiB,QAAQ,EAAIA,EAAiB,SAAS,EAAI,GAC5EG,EAAcb,EAClB,KAAK,MAAM,aAAa,QAAQK,CAAe,GAAK,IAAI,CAC1D,EACMS,EAAQD,EAAY,UAAWV,GAAQA,EAAI,QAAUS,CAAK,EAE5DD,EAAO,eACLC,GAASE,EAAQ,GACnBD,EAAY,QAAQ,CAClB,MAAAD,EACA,MAAOD,EAAO,aAAa,aAC3B,UAAW,IAAI,KAAK,EAAE,QAAQ,CAChC,CAAC,EAED,aAAa,QAAQN,EAAiB,KAAK,UAAUQ,EAAY,MAAM,EAAG,EAAE,CAAC,CAAC,GAE9ED,GACAE,GAAS,GACTD,EAAYC,CAAK,EAAE,QAAUH,EAAO,aAAa,eAEjDE,EAAYC,CAAK,EAAI,CACnB,MAAAF,EACA,MAAOD,EAAO,aAAa,aAC3B,UAAW,IAAI,KAAK,EAAE,QAAQ,CAChC,EAEA,aAAa,QAAQN,EAAiB,KAAK,UAAUQ,EAAY,MAAM,EAAG,EAAE,CAAC,CAAC,IAGlFL,EAAS,CAAE,KAAMT,EAAoB,QAASc,CAAY,CAAC,CAC7D,MAAa,CACXL,EAAS,CAAE,KAAMT,EAAoB,QAAS,CAAC,CAAE,CAAC,CACpD,CACF", "names": ["REQ_SEARCH_HISTORY", "merge", "list", "cache", "hit", "query_filter_default", "localStorageKey", "history", "queryFilter", "dispatch", "getState", "cleanQueryFilter", "search", "query", "persistance", "index"] }