{ "version": 3, "sources": ["../javascripts/actions/conversation.ts"], "sourcesContent": ["import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\n\nimport type { Conversation, CreateConversation } from '../@types/Conversation';\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport {\n buildAuthorizedGetRequest,\n buildAuthorizedPostRequest,\n buildAuthorizedPutRequest,\n} from '../Http/requestTemplates';\nimport type { RootState } from '../reducers';\nimport requestCache from '../utils/request-cache';\n\nexport const REQ_CONVERSATION_LIST = 'REQ/CONVERSATION_LIST';\nexport const RCV_CONVERSATION_LIST = 'RCV/CONVERSATION_LIST';\ntype REQ_CONVERSATION_LIST_TYPE = BaseAction;\ntype RCV_CONVERSATION_LIST_TYPE = BaseAction & {\n response: Conversation[];\n};\n\nexport const REQ_CONVERSATION = 'REQ/CONVERSATION';\nexport const RCV_CONVERSATION = 'RCV/CONVERSATION';\ntype REQ_CONVERSATION_TYPE = BaseAction;\ntype RCV_CONVERSATION_TYPE = BaseAction & {\n response: Conversation;\n};\n\nexport const REQ_CREATE_CONVERSATION = 'REQ/CREATE_CONVERSATION';\nexport const RCV_CREATE_CONVERSATION = 'RCV/CREATE_CONVERSATION';\ntype REQ_CREATE_CONVERSATION_TYPE = BaseAction;\ntype RCV_CREATE_CONVERSATION_TYPE = BaseAction & {\n response: Conversation;\n};\n\nexport const REQ_UPDATE_CONVERSATION = 'REQ/UPDATE_CONVERSATION';\nexport const RCV_UPDATE_CONVERSATION = 'RCV/UPDATE_CONVERSATION';\ntype REQ_UPDATE_CONVERSATION_TYPE = BaseAction;\ntype RCV_UPDATE_CONVERSATION_TYPE = BaseAction & {\n response: Conversation;\n};\n\nexport const SET_CLEAR_CONVERSATION = 'SET/CLEAR_CONVERSATION';\ntype SET_CLEAR_CONVERSATION_TYPE = BaseAction;\n\nexport const REQUEST_FAILED = 'CONVERSATION/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action:\n | typeof REQ_CONVERSATION_LIST\n | typeof REQ_CONVERSATION\n | typeof REQ_CREATE_CONVERSATION\n | typeof REQ_UPDATE_CONVERSATION;\n};\n\nexport type CONVERSATION_ACTIONS =\n | REQ_CONVERSATION_LIST_TYPE\n | RCV_CONVERSATION_LIST_TYPE\n | REQ_CONVERSATION_TYPE\n | RCV_CONVERSATION_TYPE\n | REQ_CREATE_CONVERSATION_TYPE\n | RCV_CREATE_CONVERSATION_TYPE\n | REQ_UPDATE_CONVERSATION_TYPE\n | RCV_UPDATE_CONVERSATION_TYPE\n | SET_CLEAR_CONVERSATION_TYPE\n | REQUEST_FAILED_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\nexport const all = () => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_CONVERSATION_LIST)) {\n return;\n }\n requestCache.isPending(REQ_CONVERSATION_LIST, true);\n\n try {\n dispatch({ type: REQ_CONVERSATION_LIST });\n\n const response = await http.json(\n '/api/conversations',\n buildAuthorizedGetRequest(auth.token),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CONVERSATION_LIST,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CONVERSATION_LIST });\n }\n requestCache.isPending(REQ_CONVERSATION_LIST, false);\n};\n\nexport const get = (id: string) => async (dispatch: Dispatch, getState: () => RootState) => {\n const cacheKey = `${REQ_CONVERSATION}/${id}`;\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(cacheKey)) {\n return;\n }\n requestCache.isPending(cacheKey, true);\n\n try {\n dispatch({ type: REQ_CONVERSATION });\n\n const response = await http.json(\n `/api/conversations/${id}`,\n buildAuthorizedGetRequest(auth.token),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CONVERSATION,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CONVERSATION });\n }\n requestCache.isPending(cacheKey, false);\n};\n\nexport const create =\n (conversation: CreateConversation) => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_CREATE_CONVERSATION)) {\n return;\n }\n requestCache.isPending(REQ_CREATE_CONVERSATION, true);\n\n try {\n dispatch({ type: REQ_CREATE_CONVERSATION });\n\n const response = await http.json(\n '/api/conversations',\n buildAuthorizedPostRequest(auth.token, { content: conversation }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_CREATE_CONVERSATION,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_CREATE_CONVERSATION });\n }\n requestCache.isPending(REQ_CREATE_CONVERSATION, false);\n };\n\nexport const markAsRead =\n (conversation: Conversation) => async (dispatch: Dispatch, getState: () => RootState) => {\n const cacheKey = `${REQ_UPDATE_CONVERSATION}/${conversation.id}`;\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(cacheKey)) {\n return;\n }\n requestCache.isPending(cacheKey, true);\n\n try {\n dispatch({ type: REQ_UPDATE_CONVERSATION });\n\n const response = await http.json(\n `/api/conversations/${conversation.id}`,\n buildAuthorizedPutRequest(auth.token, { content: undefined }),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_UPDATE_CONVERSATION,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_UPDATE_CONVERSATION });\n }\n requestCache.isPending(cacheKey, false);\n };\n\nexport const clearConversation = () => (dispatch: Dispatch) =>\n dispatch({ type: SET_CLEAR_CONVERSATION });\n"], "mappings": "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", "names": ["REQ_CONVERSATION_LIST", "RCV_CONVERSATION_LIST", "REQ_CONVERSATION", "RCV_CONVERSATION", "REQ_CREATE_CONVERSATION", "RCV_CREATE_CONVERSATION", "REQ_UPDATE_CONVERSATION", "RCV_UPDATE_CONVERSATION", "SET_CLEAR_CONVERSATION", "REQUEST_FAILED", "all", "dispatch", "getState", "auth", "request_cache_default", "response", "json", "buildAuthorizedGetRequest", "validateResponse", "get", "id", "cacheKey", "create", "conversation", "buildAuthorizedPostRequest", "markAsRead", "buildAuthorizedPutRequest", "clearConversation"] }