{ "version": 3, "sources": ["../javascripts/actions/search-subscription.ts"], "sourcesContent": ["import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\n\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport requestCache from '../utils/request-cache';\n\nimport { callbackSearch } from './search';\n\nimport type {\n SubscriptionSearch,\n SubscriptionSearchCreate,\n SubscriptionSearchItem,\n} from '../@types/AdvertismentSubscription';\nimport {\n buildAuthorizedDeleteRequest,\n buildAuthorizedGetRequest,\n buildAuthorizedPostRequest,\n buildAuthorizedPutRequest,\n} from '../Http/requestTemplates';\nimport QueryFilter from '../helpers/query-filter';\nimport type { RootState } from '../reducers';\n\nexport const REQ_SEARCH_SUBSCRIPTION_LIST = 'REQ/SEARCH_SUBSCRIPTION_LIST';\nexport const RCV_SEARCH_SUBSCRIPTION_LIST = 'RCV/SEARCH_SUBSCRIPTION_LIST';\ntype REQ_SEARCH_SUBSCRIPTION_LIST_TYPE = BaseAction;\ntype RCV_SEARCH_SUBSCRIPTION_LIST_TYPE = BaseAction & {\n response: SubscriptionSearchItem[];\n};\n\nexport const REQ_SET_SEARCH_SUBSCRIPTION_ITEM = 'REQ/SET_SEARCH_SUBSCRIPTION_ITEM';\ntype REQ_SET_SEARCH_SUBSCRIPTION_ITEM_TYPE = BaseAction & {\n subscription: SubscriptionSearchItem | undefined;\n};\n\nexport const REQ_CREATE_SEARCH_SUBSCRIPTION = 'REQ/CREATE_SEARCH_SUBSCRIPTION';\nexport const RCV_CREATE_SEARCH_SUBSCRIPTION = 'RCV/CREATE_SEARCH_SUBSCRIPTION';\ntype REQ_CREATE_SEARCH_SUBSCRIPTION_TYPE = BaseAction;\ntype RCV_CREATE_SEARCH_SUBSCRIPTION_TYPE = BaseAction & {\n response: SubscriptionSearch;\n sub: SubscriptionSearchCreate;\n};\n\nexport const REQ_UPDATE_SEARCH_SUBSCRIPTION = 'REQ/UPDATE_SEARCH_SUBSCRIPTION';\nexport const RCV_UPDATE_SEARCH_SUBSCRIPTION = 'RCV/UPDATE_SEARCH_SUBSCRIPTION';\ntype REQ_UPDATE_SEARCH_SUBSCRIPTION_TYPE = BaseAction;\ntype RCV_UPDATE_SEARCH_SUBSCRIPTION_TYPE = BaseAction & {\n response: SubscriptionSearch;\n sub: SubscriptionSearch;\n};\n\nexport const REQ_REMOVE_SEARCH_SUBSCRIPTION = 'REQ/REMOVE_SEARCH_SUBSCRIPTION';\nexport const RCV_REMOVE_SEARCH_SUBSCRIPTION = 'RCV/REMOVE_SEARCH_SUBSCRIPTION';\ntype REQ_REMOVE_SEARCH_SUBSCRIPTION_TYPE = BaseAction;\ntype RCV_REMOVE_SEARCH_SUBSCRIPTION_TYPE = BaseAction & {\n response: SubscriptionSearch;\n};\n\nexport const REQUEST_FAILED = 'SEARCH_SUBSCRIPTION/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action:\n | typeof REQ_SEARCH_SUBSCRIPTION_LIST\n | typeof REQ_CREATE_SEARCH_SUBSCRIPTION\n | typeof REQ_UPDATE_SEARCH_SUBSCRIPTION\n | typeof REQ_REMOVE_SEARCH_SUBSCRIPTION;\n};\n\nexport type SEARCH_SUBSCRIPTION_ACTION =\n | REQ_SEARCH_SUBSCRIPTION_LIST_TYPE\n | RCV_SEARCH_SUBSCRIPTION_LIST_TYPE\n | REQ_SET_SEARCH_SUBSCRIPTION_ITEM_TYPE\n | REQ_CREATE_SEARCH_SUBSCRIPTION_TYPE\n | RCV_CREATE_SEARCH_SUBSCRIPTION_TYPE\n | REQ_UPDATE_SEARCH_SUBSCRIPTION_TYPE\n | RCV_UPDATE_SEARCH_SUBSCRIPTION_TYPE\n | REQ_REMOVE_SEARCH_SUBSCRIPTION_TYPE\n | RCV_REMOVE_SEARCH_SUBSCRIPTION_TYPE\n | REQUEST_FAILED_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\nexport const set = (subscription: SubscriptionSearchItem) => (dispatch: Dispatch) =>\n dispatch({ type: REQ_SET_SEARCH_SUBSCRIPTION_ITEM, subscription });\n\nexport const allAndCollectSubscriptions =\n () => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST)) {\n return;\n }\n requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST, true);\n\n dispatch({ type: REQ_SEARCH_SUBSCRIPTION_LIST });\n\n try {\n const response = await http.json(\n '/api/subscriptions/search',\n buildAuthorizedGetRequest(auth.token),\n );\n\n dispatch({\n type: RCV_SEARCH_SUBSCRIPTION_LIST,\n response: response.response,\n });\n if (response.response) {\n response.response.forEach((sub) => {\n try {\n const queryFilter = new QueryFilter(sub.query).add(\n 'itemPublished.from',\n sub.lastNotifiedAt,\n );\n callbackSearch(queryFilter, (_resultSet, numberOfHits) => {\n callbackSearch(new QueryFilter(sub.query), (rS, totalHits) => {\n const match = rS.find((x) => !!x.featuredImage);\n\n const image =\n match?.featuredImage?.type === 'Image'\n ? match.featuredImage.files?.[0].formats.find((x) => x.format === '800x')\n ?.url || null\n : null;\n dispatch({\n type: REQ_SET_SEARCH_SUBSCRIPTION_ITEM,\n subscription: {\n ...sub,\n resultSet: rS,\n numberOfHits,\n totalHits,\n image,\n },\n });\n });\n });\n } catch (_ee) {}\n });\n }\n } catch (_e) {\n dispatch({\n type: REQUEST_FAILED,\n action: REQ_SEARCH_SUBSCRIPTION_LIST,\n });\n } finally {\n requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST, false);\n }\n };\n\nexport const collectSubscription = (subscription: SubscriptionSearch) => (dispatch: Dispatch) => {\n const queryFilter = new QueryFilter(subscription.query).add(\n 'itemPublished.from',\n subscription.lastNotifiedAt,\n );\n\n callbackSearch(queryFilter, (_resultSet, numberOfHits) => {\n callbackSearch(new QueryFilter(subscription.query), (rS, totalHits) => {\n const match = rS.find((x) => !!x.featuredImage);\n const image =\n match?.featuredImage?.type === 'Image'\n ? match.featuredImage.files?.[0].formats.find((x) => x.format === '800x')?.url || null\n : null;\n\n dispatch({\n type: REQ_SET_SEARCH_SUBSCRIPTION_ITEM,\n subscription: {\n ...subscription,\n resultSet: rS,\n numberOfHits,\n totalHits,\n image,\n },\n });\n });\n });\n};\n\nexport const all = () => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST)) {\n return;\n }\n requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST, true);\n\n try {\n dispatch({ type: REQ_SEARCH_SUBSCRIPTION_LIST });\n\n const response = await http.json(\n '/api/subscriptions/search',\n buildAuthorizedGetRequest(auth.token),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_SEARCH_SUBSCRIPTION_LIST,\n response: response.response,\n });\n } catch (_e) {\n dispatch({\n type: REQUEST_FAILED,\n action: REQ_SEARCH_SUBSCRIPTION_LIST,\n });\n }\n requestCache.isPending(REQ_SEARCH_SUBSCRIPTION_LIST, false);\n};\n\nexport const create =\n (subscription: SubscriptionSearchCreate) =>\n async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_CREATE_SEARCH_SUBSCRIPTION)) {\n return;\n }\n requestCache.isPending(REQ_CREATE_SEARCH_SUBSCRIPTION, true);\n\n try {\n dispatch({ type: REQ_CREATE_SEARCH_SUBSCRIPTION });\n\n const response = await http.json(\n '/api/subscriptions/search',\n buildAuthorizedPostRequest(auth.token, { content: subscription }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CREATE_SEARCH_SUBSCRIPTION,\n response: response.response,\n sub: subscription,\n });\n } catch (_e) {\n dispatch({\n type: REQUEST_FAILED,\n action: REQ_CREATE_SEARCH_SUBSCRIPTION,\n });\n }\n requestCache.isPending(REQ_CREATE_SEARCH_SUBSCRIPTION, false);\n };\n\nexport const update =\n (subscription: SubscriptionSearch | SubscriptionSearchItem) =>\n async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_UPDATE_SEARCH_SUBSCRIPTION)) {\n return;\n }\n requestCache.isPending(REQ_UPDATE_SEARCH_SUBSCRIPTION, true);\n\n try {\n dispatch({ type: REQ_UPDATE_SEARCH_SUBSCRIPTION });\n\n const response = await http.json(\n `/api/subscriptions/search/${subscription.id}`,\n buildAuthorizedPutRequest(auth.token, { content: subscription }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_UPDATE_SEARCH_SUBSCRIPTION,\n response: response.response,\n sub: subscription,\n });\n } catch (_e) {\n dispatch({\n type: REQUEST_FAILED,\n action: REQ_UPDATE_SEARCH_SUBSCRIPTION,\n });\n }\n requestCache.isPending(REQ_UPDATE_SEARCH_SUBSCRIPTION, false);\n };\n\nexport const remove =\n (subscription: SubscriptionSearch) => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_REMOVE_SEARCH_SUBSCRIPTION)) {\n return;\n }\n requestCache.isPending(REQ_REMOVE_SEARCH_SUBSCRIPTION, true);\n\n try {\n dispatch({ type: REQ_REMOVE_SEARCH_SUBSCRIPTION });\n\n const response = await http.json(\n `/api/subscriptions/search/${subscription.id}`,\n buildAuthorizedDeleteRequest(auth.token),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_REMOVE_SEARCH_SUBSCRIPTION,\n response: response.response,\n });\n } catch (_e) {\n dispatch({\n type: REQUEST_FAILED,\n action: REQ_REMOVE_SEARCH_SUBSCRIPTION,\n });\n }\n requestCache.isPending(REQ_REMOVE_SEARCH_SUBSCRIPTION, false);\n };\n"], "mappings": "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", "names": ["REQ_SEARCH_SUBSCRIPTION_LIST", "RCV_SEARCH_SUBSCRIPTION_LIST", "REQ_SET_SEARCH_SUBSCRIPTION_ITEM", "REQ_CREATE_SEARCH_SUBSCRIPTION", "RCV_CREATE_SEARCH_SUBSCRIPTION", "REQ_UPDATE_SEARCH_SUBSCRIPTION", "RCV_UPDATE_SEARCH_SUBSCRIPTION", "REQ_REMOVE_SEARCH_SUBSCRIPTION", "RCV_REMOVE_SEARCH_SUBSCRIPTION", "REQUEST_FAILED", "allAndCollectSubscriptions", "dispatch", "getState", "auth", "request_cache_default", "REQ_SEARCH_SUBSCRIPTION_LIST", "response", "json", "buildAuthorizedGetRequest", "RCV_SEARCH_SUBSCRIPTION_LIST", "sub", "queryFilter", "query_filter_default", "callbackSearch", "_resultSet", "numberOfHits", "rS", "totalHits", "match", "x", "image", "REQ_SET_SEARCH_SUBSCRIPTION_ITEM", "REQUEST_FAILED", "collectSubscription", "subscription", "all", "validateResponse", "create", "REQ_CREATE_SEARCH_SUBSCRIPTION", "buildAuthorizedPostRequest", "RCV_CREATE_SEARCH_SUBSCRIPTION", "update", "REQ_UPDATE_SEARCH_SUBSCRIPTION", "buildAuthorizedPutRequest", "RCV_UPDATE_SEARCH_SUBSCRIPTION", "remove", "REQ_REMOVE_SEARCH_SUBSCRIPTION", "buildAuthorizedDeleteRequest", "RCV_REMOVE_SEARCH_SUBSCRIPTION"] }