{
  "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<typeof REQ_CONVERSATION_LIST>;\ntype RCV_CONVERSATION_LIST_TYPE = BaseAction<typeof RCV_CONVERSATION_LIST> & {\n  response: Conversation[];\n};\n\nexport const REQ_CONVERSATION = 'REQ/CONVERSATION';\nexport const RCV_CONVERSATION = 'RCV/CONVERSATION';\ntype REQ_CONVERSATION_TYPE = BaseAction<typeof REQ_CONVERSATION>;\ntype RCV_CONVERSATION_TYPE = BaseAction<typeof RCV_CONVERSATION> & {\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<typeof REQ_CREATE_CONVERSATION>;\ntype RCV_CREATE_CONVERSATION_TYPE = BaseAction<typeof RCV_CREATE_CONVERSATION> & {\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<typeof REQ_UPDATE_CONVERSATION>;\ntype RCV_UPDATE_CONVERSATION_TYPE = BaseAction<typeof RCV_UPDATE_CONVERSATION> & {\n  response: Conversation;\n};\n\nexport const SET_CLEAR_CONVERSATION = 'SET/CLEAR_CONVERSATION';\ntype SET_CLEAR_CONVERSATION_TYPE = BaseAction<typeof SET_CLEAR_CONVERSATION>;\n\nexport const REQUEST_FAILED = 'CONVERSATION/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction<typeof REQUEST_FAILED> & {\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<CONVERSATION_ACTIONS>;\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<Conversation[]>(\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<Conversation>(\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<Conversation>(\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<Conversation>(\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"]
}