{ "version": 3, "sources": ["../javascripts/actions/item.ts"], "sourcesContent": ["import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\n\nimport type Item from '../@types/item';\n\nimport type { ElasticSearchResponse } from '../@types/ElasticSearchResponse';\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport { buildGetRequest } from '../Http/requestTemplates';\nimport type QueryFilter from '../helpers/query-filter';\nimport requestCache from '../utils/request-cache';\n\nexport const REQ_ITEM = 'REQ/ITEM';\nexport const RCV_ITEM = 'RCV/ITEM';\ntype REQ_ITEM_TYPE = BaseAction;\ntype RCV_ITEM_TYPE = BaseAction & {\n response: ElasticSearchResponse;\n};\n\nexport const REQ_ITEM_FACETS = 'REQ/ITEM_FACETS';\nexport const RCV_ITEM_FACETS = 'RCV/ITEM_FACETS';\ntype REQ_ITEM_FACETS_TYPE = BaseAction;\ntype RCV_ITEM_FACETS_TYPE = BaseAction & {\n response: ElasticSearchResponse;\n};\n\nexport const REQ_RELATED_ITEMS = 'REQ/ITEM_RELATED';\nexport const RCV_RELATED_ITEMS = 'RCV/ITEM_RELATED';\ntype REQ_RELATED_ITEMS_TYPE = BaseAction;\ntype RCV_RELATED_ITEMS_TYPE = BaseAction & {\n response: ElasticSearchResponse;\n};\n\nexport const REQ_CLEAR = 'REQ/ITEM_CLEAR';\ntype REQ_CLEAR_TYPE = BaseAction;\n\nexport const REQUEST_FAILED = 'ITEM/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action: typeof REQ_ITEM | typeof REQ_ITEM_FACETS | typeof REQ_RELATED_ITEMS;\n};\n\nexport type ITEM_ACTION =\n | REQ_ITEM_TYPE\n | RCV_ITEM_TYPE\n | REQ_ITEM_FACETS_TYPE\n | RCV_ITEM_FACETS_TYPE\n | REQ_RELATED_ITEMS_TYPE\n | RCV_RELATED_ITEMS_TYPE\n | REQ_CLEAR_TYPE\n | REQUEST_FAILED_TYPE;\ntype Dispatch = ReduxDispatch;\n\nexport const find = (id: string) => async (dispatch: Dispatch) => {\n if (requestCache.isPending(REQ_ITEM)) {\n return;\n }\n requestCache.isPending(REQ_ITEM, true);\n\n try {\n dispatch({ type: REQ_ITEM });\n\n const response = await http.json>(\n `/api/search/${id}`,\n buildGetRequest({ scrapeProbabilityScore: true }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_ITEM,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_ITEM });\n }\n requestCache.isPending(REQ_ITEM, false);\n};\n\nexport const callbackFind = async (id: string, callback: (data: Item) => void) => {\n try {\n const response = await http.json>(\n `/api/search/${id}`,\n buildGetRequest({ scrapeProbabilityScore: true }),\n );\n callback(response.response.documentList.documents[0]);\n } catch (_e) {\n // Ignore\n }\n};\n\nconst getFilterQueryString = (queryFilter: QueryFilter) => {\n if (queryFilter.isEmpty()) return '';\n\n return `?filter=${queryFilter.toQueryStringFilter()}`;\n};\n\nexport const facets = (queryFilter: QueryFilter) => async (dispatch: Dispatch) => {\n if (requestCache.isPending(REQ_ITEM_FACETS)) {\n return;\n }\n requestCache.isPending(REQ_ITEM_FACETS, true);\n\n try {\n dispatch({ type: REQ_ITEM_FACETS });\n\n const response = await http.json>(\n `/api/facets${getFilterQueryString(queryFilter)}`,\n buildGetRequest({ scrapeProbabilityScore: true }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_ITEM_FACETS,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_ITEM_FACETS });\n }\n requestCache.isPending(REQ_ITEM_FACETS, false);\n};\n\nexport const related = (item: Item) => async (dispatch: Dispatch) => {\n if (!item || !item.branches || item.branches.length === 0) return;\n\n if (requestCache.isPending(REQ_RELATED_ITEMS)) {\n return;\n }\n requestCache.isPending(REQ_RELATED_ITEMS, true);\n\n try {\n dispatch({ type: REQ_RELATED_ITEMS });\n\n const response = await http.json>(\n `/api/related/${item.id}?branchId=${item.branches[0].id}`,\n buildGetRequest({ scrapeProbabilityScore: true }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_RELATED_ITEMS,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_RELATED_ITEMS });\n }\n requestCache.isPending(REQ_RELATED_ITEMS, false);\n};\n\nexport const clear = () => (dispatch: Dispatch) => dispatch({ type: REQ_CLEAR });\n"], "mappings": "4GAWO,IAAMA,EAAW,WACXC,EAAW,WAMXC,EAAkB,kBAClBC,EAAkB,kBAMlBC,EAAoB,mBACpBC,EAAoB,mBAMpBC,EAAY,iBAGZC,EAAiB,sBAgBjBC,EAAQC,GAAe,MAAOC,GAAuB,CAChE,GAAI,CAAAC,EAAa,UAAUX,CAAQ,EAGnC,CAAAW,EAAa,UAAUX,EAAU,EAAI,EAErC,GAAI,CACFU,EAAS,CAAE,KAAMV,CAAS,CAAC,EAE3B,IAAMY,EAAW,MAAWC,EAC1B,eAAeJ,CAAE,GACjBK,EAAgB,CAAE,uBAAwB,EAAK,CAAC,CAClD,EACKC,EAAiBH,CAAQ,EAC9BF,EAAS,CACP,KAAMT,EACN,SAAUW,EAAS,QACrB,CAAC,CACH,MAAa,CACXF,EAAS,CAAE,KAAMH,EAAgB,OAAQP,CAAS,CAAC,CACrD,CACAW,EAAa,UAAUX,EAAU,EAAK,EACxC,EAEagB,EAAe,MAAOP,EAAYQ,IAAmC,CAChF,GAAI,CACF,IAAML,EAAW,MAAWC,EAC1B,eAAeJ,CAAE,GACjBK,EAAgB,CAAE,uBAAwB,EAAK,CAAC,CAClD,EACAG,EAASL,EAAS,SAAS,aAAa,UAAU,CAAC,CAAC,CACtD,MAAa,CAEb,CACF,EAEMM,EAAwBC,GACxBA,EAAY,QAAQ,EAAU,GAE3B,WAAWA,EAAY,oBAAoB,CAAC,GAGxCC,EAAUD,GAA6B,MAAOT,GAAuB,CAChF,GAAI,CAAAC,EAAa,UAAUT,CAAe,EAG1C,CAAAS,EAAa,UAAUT,EAAiB,EAAI,EAE5C,GAAI,CACFQ,EAAS,CAAE,KAAMR,CAAgB,CAAC,EAElC,IAAMU,EAAW,MAAWC,EAC1B,cAAcK,EAAqBC,CAAW,CAAC,GAC/CL,EAAgB,CAAE,uBAAwB,EAAK,CAAC,CAClD,EACKC,EAAiBH,CAAQ,EAC9BF,EAAS,CACP,KAAMP,EACN,SAAUS,EAAS,QACrB,CAAC,CACH,MAAa,CACXF,EAAS,CAAE,KAAMH,EAAgB,OAAQL,CAAgB,CAAC,CAC5D,CACAS,EAAa,UAAUT,EAAiB,EAAK,EAC/C,EA4BO,IAAMmB,EAAQ,IAAOC,GAAuBA,EAAS,CAAE,KAAMC,CAAU,CAAC", "names": ["REQ_ITEM", "RCV_ITEM", "REQ_ITEM_FACETS", "RCV_ITEM_FACETS", "REQ_RELATED_ITEMS", "RCV_RELATED_ITEMS", "REQ_CLEAR", "REQUEST_FAILED", "find", "id", "dispatch", "request_cache_default", "response", "json", "buildGetRequest", "validateResponse", "callbackFind", "callback", "getFilterQueryString", "queryFilter", "facets", "clear", "dispatch", "REQ_CLEAR"] }