{"version":3,"file":"static/components/7218-d160243923c5c43a9807.js?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/msgs/components/common/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/groups/components/utils/api.js"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useTimeout } from \"react-use\";\nimport useSWR, { mutate } from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport useSWRInfinite from \"swr/infinite\";\nimport { validate as uuidValidate } from \"uuid\";\n\nimport axios from \"@agir/lib/utils/axios\";\nimport * as groupAPI from \"@agir/groups/utils/api\";\nimport { routeConfig } from \"@agir/front/app/routes.config\";\nimport { setBackLink } from \"@agir/front/globalContext/actions\";\nimport { useDispatch } from \"@agir/front/globalContext/GlobalContext\";\nimport { useCurrentLocation } from \"@agir/front/app/utils\";\n\nconst MESSAGES_PAGE_SIZE = 10;\nconst COMMENTS_PAGE_SIZE = 15;\nconst REFRESH_INTERVAL = 10 * 60 * 1000;\n\nexport const useUnreadMessageCount = () => {\n  const [isReady, setIsReady] = useState(false)\n  const { data: session } = useSWRImmutable(\"/api/session/\");\n  const { data } = useSWR(\n    isReady && \"/api/user/messages/unread_count/\",\n    {\n      refreshInterval: REFRESH_INTERVAL,\n      dedupingInterval: REFRESH_INTERVAL,\n      focusThrottleInterval: REFRESH_INTERVAL,\n      shouldRetryOnError: false,\n      revalidateIfStale: false,\n    },\n  );\n\n  useEffect(() => {\n    if (session?.user) {\n      setIsReady(true)\n    }\n  }, [session]);\n\n  return data?.unreadMessageCount && !isNaN(parseInt(data.unreadMessageCount))\n    ? parseInt(data.unreadMessageCount)\n    : 0;\n};\n\nexport const useCommentsSWR = (messagePk, autorefresh = false) => {\n  const { data, error, isValidating, mutate, size, setSize } = useSWRInfinite(\n    (index) =>\n      messagePk &&\n      `/api/groupes/messages/${messagePk}/comments/?page=${\n        index + 1\n      }&page_size=${COMMENTS_PAGE_SIZE}`,\n    autorefresh\n      ? {\n          refreshInterval: REFRESH_INTERVAL,\n          dedupingInterval: REFRESH_INTERVAL,\n          focusThrottleInterval: REFRESH_INTERVAL,\n          shouldRetryOnError: false,\n          revalidateIfStale: false,\n          revalidateAll: true,\n        }\n      : undefined,\n  );\n\n  const comments = useMemo(() => {\n    const comments = {};\n    const commentsIds = [];\n    if (Array.isArray(data)) {\n      data.forEach(({ results }) => {\n        if (Array.isArray(results)) {\n          results.forEach((comment) => {\n            if (!comments[comment.id]) {\n              comments[comment.id] = comment;\n              commentsIds.push(comment.id);\n            }\n          });\n        }\n      });\n    }\n    return commentsIds.reverse().map((id) => comments[id]);\n  }, [data]);\n\n  const isLoadingInitialData = !data && !error;\n  const isLoadingMore =\n    isLoadingInitialData ||\n    (size > 0 && data && typeof data[size - 1] === \"undefined\");\n\n  const commentsCount = (data && data[data.length - 1]?.count) || 0;\n  const isEmpty = commentsCount === 0;\n  const isReachingEnd =\n    isEmpty ||\n    comments.length === commentsCount ||\n    (data && data[data.length - 1]?.results?.length < COMMENTS_PAGE_SIZE);\n  const isRefreshing = isValidating && data && data.length === size;\n\n  const loadMore = useCallback(() => setSize(size + 1), [setSize, size]);\n  const isAutoRefreshPausedRef = useRef(false);\n\n  return {\n    comments,\n    commentsCount,\n    error,\n    isLoadingInitialData,\n    isLoadingMore,\n    isRefreshing,\n    loadMore: isEmpty || isReachingEnd ? undefined : loadMore,\n    mutate,\n    isAutoRefreshPausedRef,\n  };\n};\n\nexport const useMessageSWR = (messagePk) => {\n  const dispatch = useDispatch();\n  const pathname = useCurrentLocation();\n\n  const isAutoRefreshPausedRef = useRef(false);\n\n  const { data: session } = useSWRImmutable(\"/api/session/\");\n  const user = session?.user;\n\n  const {\n    data,\n    error: errorMessages,\n    isValidating: isValidatingMessages,\n    mutate: mutateMessages,\n    size,\n    setSize,\n  } = useSWRInfinite(\n    (index) =>\n      user &&\n      `/api/user/messages/?page=${index + 1}&page_size=${MESSAGES_PAGE_SIZE}`,\n    {\n      revalidateIfStale: false,\n      revalidateOnFocus: false,\n      revalidateOnReconnect: false,\n    },\n  );\n  const { data: messageRecipients } = useSWRImmutable(\n    data && \"/api/user/messages/recipients/\",\n  );\n  const {\n    data: currentMessage,\n    error,\n    isValidating,\n    mutate: mutateMessage,\n  } = useSWRImmutable(\n    data && messagePk && uuidValidate(messagePk)\n      ? `/api/groupes/messages/${messagePk}/`\n      : null,\n  );\n\n  const messages = useMemo(() => {\n    const messages = {};\n    const messageIds = [];\n    if (Array.isArray(data)) {\n      data.forEach(({ results }) => {\n        if (Array.isArray(results)) {\n          results.forEach((message) => {\n            if (!messages[message.id]) {\n              messages[message.id] = message;\n              messageIds.push(message.id);\n            }\n          });\n        }\n      });\n    }\n    return messageIds.map((id) => messages[id]);\n  }, [data]);\n\n  const isLoadingInitialData = !data && !errorMessages;\n  const isLoadingMore =\n    isLoadingInitialData ||\n    (size > 0 && data && typeof data[size - 1] === \"undefined\");\n\n  const messageCount = (data && data[data.length - 1]?.count) || 0;\n  const isEmpty = messageCount === 0;\n  const isReachingEnd =\n    isEmpty ||\n    messages.length === messageCount ||\n    (data && data[data.length - 1]?.results?.length < MESSAGES_PAGE_SIZE);\n  const isRefreshing = isValidatingMessages && data && data.length === size;\n\n  const loadMore = useCallback(() => setSize(size + 1), [setSize, size]);\n\n  const currentMessageId = currentMessage?.id;\n\n  const onSelectMessage = useSelectMessage();\n\n  useEffect(() => {\n    dispatch(\n      setBackLink(\n        currentMessageId\n          ? {\n              route: \"messages\",\n              label: \"Retour aux messages\",\n            }\n          : {\n              route: \"events\",\n              label: \"Retour à l'accueil\",\n            },\n      ),\n    );\n  }, [dispatch, currentMessageId, pathname]);\n\n  useEffect(() => {\n    !isValidating &&\n      error?.response?.status === 404 &&\n      onSelectMessage(null, true);\n  }, [error, isValidating, onSelectMessage]);\n\n  useEffect(() => {\n    if (isValidating || !Array.isArray(messages) || !currentMessage) {\n      return;\n    }\n    const updatedMessage = messages.find((m) => m.id === currentMessage.id);\n    if (\n      !updatedMessage ||\n      updatedMessage.lastUpdate === currentMessage.lastUpdate\n    ) {\n      return;\n    }\n    mutateMessage();\n  }, [isValidating, messages, currentMessage, mutateMessage]);\n\n  return {\n    user,\n    messages,\n    messageCount,\n    errorMessages,\n    isLoadingInitialData,\n    isLoadingMore,\n    isRefreshing,\n    loadMore: isEmpty || isReachingEnd ? undefined : loadMore,\n    mutateMessages,\n    messageRecipients,\n    currentMessage,\n    isAutoRefreshPausedRef,\n    onSelectMessage,\n  };\n};\n\nexport const useSelectMessage = () => {\n  const history = useHistory();\n  const handleSelect = useCallback(\n    (messagePk, doNotPush = false) => {\n      const fn = doNotPush ? history.replace : history.push;\n      fn(routeConfig.messages.getLink({ messagePk }), {\n        backLink: { route: \"messages\" },\n      });\n    },\n    [history],\n  );\n\n  return handleSelect;\n};\n\nexport const useMessageActions = (\n  user,\n  messageRecipients,\n  selectedMessage,\n  onSelectMessage,\n  mutateMessages,\n  mutateComments,\n) => {\n  const shouldDismissAction = useRef(false);\n\n  const [isLoading, setIsLoading] = useState(false);\n  const [selectedGroupEvents, setSelectedGroupEvents] = useState([]);\n  const [selectedComment, setSelectedComment] = useState(null);\n  const [messageAction, setMessageAction] = useState(\"\");\n  const [messageErrors, setMessageErrors] = useState(null);\n  const [commentErrors, setCommentErrors] = useState(null);\n\n  const canWriteNewMessage =\n    !!user && Array.isArray(messageRecipients) && messageRecipients.length > 0;\n\n  const canEditSelectedMessage = useMemo(\n    () =>\n      canWriteNewMessage &&\n      selectedMessage?.group &&\n      messageRecipients.some((r) => r.id === selectedMessage.group.id),\n    [canWriteNewMessage, messageRecipients, selectedMessage],\n  );\n\n  const isAuthor = useMemo(() => {\n    if (!user) {\n      return false;\n    }\n    if (!selectedMessage && !selectedComment) {\n      return false;\n    }\n    if (selectedComment) {\n      return selectedComment && selectedComment.author?.id === user.id;\n    }\n    return selectedMessage && selectedMessage.author?.id === user.id;\n  }, [user, selectedMessage, selectedComment]);\n\n  const getSelectedGroupEvents = useCallback(async (group) => {\n    shouldDismissAction.current = false;\n    setIsLoading(true);\n    setSelectedGroupEvents([]);\n    try {\n      const { data: events } = await axios.get(\n        `/api/groupes/${group.id}/evenements/`,\n      );\n      setIsLoading(false);\n      setSelectedGroupEvents(events);\n    } catch (e) {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const saveMessage = useCallback(\n    async (message) => {\n      setIsLoading(true);\n      setMessageErrors(null);\n      shouldDismissAction.current = false;\n      try {\n        const { data, error } = message.id\n          ? await groupAPI.updateMessage(message)\n          : await groupAPI.createMessage(message.group.id, message);\n\n        if (error) {\n          typeof error === \"string\"\n            ? setMessageErrors({ details: \"Une erreur est survenue\" })\n            : setMessageErrors(error);\n          setIsLoading(false);\n          return;\n        }\n        shouldDismissAction.current = true;\n        setIsLoading(false);\n        mutateMessages();\n        if (message.id) {\n          mutate(`/api/groupes/messages/${message.id}/`, () => data, false);\n        } else {\n          onSelectMessage(data.id);\n        }\n      } catch (e) {\n        setIsLoading(false);\n        setMessageErrors({ details: e.message });\n      }\n    },\n    [onSelectMessage, mutateMessages],\n  );\n\n  const writeNewComment = useCallback(\n    async (comment) => {\n      setIsLoading(true);\n      setCommentErrors(null);\n      try {\n        const { error } = await groupAPI.createComment(\n          selectedMessage.id,\n          comment,\n        );\n        if (error) {\n          typeof error === \"string\"\n            ? setCommentErrors({ details: \"Une erreur est survenue\" })\n            : setCommentErrors(error);\n          setIsLoading(false);\n          return;\n        }\n        setIsLoading(false);\n        mutateComments();\n        onSelectMessage(selectedMessage.id);\n      } catch (e) {\n        setIsLoading(false);\n        setCommentErrors({ details: e.message });\n      }\n    },\n    [selectedMessage, onSelectMessage, mutateComments],\n  );\n\n  const onDelete = useCallback(async () => {\n    if (!selectedMessage && !selectedComment) {\n      return;\n    }\n    setIsLoading(true);\n    try {\n      selectedComment\n        ? await groupAPI.deleteComment(selectedComment, selectedMessage)\n        : await groupAPI.deleteMessage(selectedMessage);\n      setIsLoading(false);\n    } catch (e) {\n      setIsLoading(false);\n    }\n  }, [selectedMessage, selectedComment]);\n\n  const onReport = useCallback(async () => {\n    if (!selectedMessage && !selectedComment) {\n      return;\n    }\n    setIsLoading(true);\n    try {\n      selectedComment\n        ? await groupAPI.reportComment(selectedComment)\n        : await groupAPI.reportMessage(selectedMessage);\n      setIsLoading(false);\n    } catch (e) {\n      setIsLoading(false);\n    }\n  }, [selectedMessage, selectedComment]);\n\n  const writeNewMessage = useCallback(() => {\n    setMessageAction(\"create\");\n  }, []);\n\n  const editMessage = useCallback(() => {\n    getSelectedGroupEvents(selectedMessage.group);\n    setMessageAction(\"edit\");\n  }, [getSelectedGroupEvents, selectedMessage]);\n\n  const confirmDelete = useCallback(() => {\n    setMessageAction(\"delete\");\n  }, []);\n\n  const confirmReport = useCallback(() => {\n    setMessageAction(\"report\");\n  }, []);\n\n  const confirmReportComment = useCallback((comment) => {\n    setSelectedComment(comment);\n    setMessageAction(\"report\");\n  }, []);\n\n  const confirmDeleteComment = useCallback((comment) => {\n    setSelectedComment(comment);\n    setMessageAction(\"delete\");\n  }, []);\n\n  const dismissMessageAction = useCallback(() => {\n    if (messageAction === \"delete\" && selectedMessage && selectedComment) {\n      mutateComments();\n    } else if (messageAction === \"delete\") {\n      onSelectMessage(null);\n      mutateMessages();\n    }\n    setMessageAction(\"\");\n    setSelectedComment(null);\n    shouldDismissAction.current = false;\n  }, [\n    messageAction,\n    selectedComment,\n    selectedMessage,\n    onSelectMessage,\n    mutateMessages,\n    mutateComments,\n  ]);\n\n  useEffect(() => {\n    !isLoading && shouldDismissAction.current && dismissMessageAction();\n  }, [isLoading, dismissMessageAction]);\n\n  return {\n    isLoading,\n\n    messageAction,\n    selectedGroupEvents,\n    selectedComment,\n\n    messageErrors,\n    commentErrors,\n\n    writeNewMessage: canWriteNewMessage ? writeNewMessage : undefined,\n    writeNewComment,\n    editMessage: canEditSelectedMessage ? editMessage : undefined,\n    confirmDelete: canEditSelectedMessage ? confirmDelete : undefined,\n    confirmReport,\n    confirmDeleteComment,\n    confirmReportComment,\n\n    getSelectedGroupEvents,\n    saveMessage,\n    onDelete:\n      messageAction === \"delete\" || canEditSelectedMessage\n        ? onDelete\n        : undefined,\n    onReport:\n      messageAction === \"report\" || (canEditSelectedMessage && !isAuthor)\n        ? onReport\n        : undefined,\n    dismissMessageAction,\n  };\n};\n","import querystring from \"query-string\";\nimport axios from \"@agir/lib/utils/axios\";\nimport { objectToFormData } from \"@agir/lib/utils/forms\";\nimport useSWR from \"swr\";\n\nexport const API_GROUP_PREFIX = \"/api/groupes/\";\n\nexport const ENDPOINT = {\n  getGroup: `${API_GROUP_PREFIX}:groupPk/`,\n  getGroupSuggestions: `${API_GROUP_PREFIX}:groupPk/suggestions/`,\n\n  joinGroup: `${API_GROUP_PREFIX}:groupPk/rejoindre/`,\n  followGroup: `${API_GROUP_PREFIX}:groupPk/suivre/`,\n  updateOwnMembership: `${API_GROUP_PREFIX}:groupPk/membre/`,\n  quitGroup: `${API_GROUP_PREFIX}:groupPk/quitter/`,\n\n  getUpcomingEvents: `${API_GROUP_PREFIX}:groupPk/evenements/a-venir/`,\n  getPastEvents:\n    `${API_GROUP_PREFIX}:groupPk/evenements/passes/?page=:page&page_size=:pageSize`,\n  getPastEventReports: `${API_GROUP_PREFIX}:groupPk/evenements/compte-rendus/`,\n\n  getEventsJoinedByGroup: `${API_GROUP_PREFIX}:groupPk/evenements-rejoints/`,\n\n  getMessages: `${API_GROUP_PREFIX}:groupPk/messages/?page=:page&page_size=:pageSize`,\n  getMessage: `${API_GROUP_PREFIX}messages/:messagePk/`,\n\n  createMessage: `${API_GROUP_PREFIX}:groupPk/messages/`,\n  createPrivateMessage: `${API_GROUP_PREFIX}:groupPk/envoi-message-prive/`,\n  updateMessage: `${API_GROUP_PREFIX}messages/:messagePk/`,\n  deleteMessage: `${API_GROUP_PREFIX}messages/:messagePk/`,\n  messageNotification: `${API_GROUP_PREFIX}messages/notification/:messagePk/`,\n  messageLocked: `${API_GROUP_PREFIX}messages/verrouillage/:messagePk/`,\n  messageParticipants: `${API_GROUP_PREFIX}messages/:messagePk/participants/`,\n\n  getComments: `${API_GROUP_PREFIX}messages/:messagePk/comments/`,\n  createComment: `${API_GROUP_PREFIX}messages/:messagePk/comments/`,\n  deleteComment: `${API_GROUP_PREFIX}messages/comments/:commentPk/`,\n  setAllMessagesRead: `/api/messages/all-read/`,\n\n  getMembers: `${API_GROUP_PREFIX}:groupPk/membres/`,\n  updateGroup: `${API_GROUP_PREFIX}:groupPk/update/`,\n  inviteToGroup: `${API_GROUP_PREFIX}:groupPk/invitation/`,\n  getMemberPersonalInformation: `${API_GROUP_PREFIX}membres/:memberPk/informations/`,\n  updateMember: `${API_GROUP_PREFIX}membres/:memberPk/`,\n  getFinance: `${API_GROUP_PREFIX}:groupPk/finance/`,\n\n  report: `/api/report/`,\n\n  createGroupExternalLink: `${API_GROUP_PREFIX}:groupPk/link/`,\n  groupExternalLink: `${API_GROUP_PREFIX}:groupPk/link/:linkPk/`,\n\n  searchGroups: `${API_GROUP_PREFIX}recherche/`,\n  geoSearchGroups: `${API_GROUP_PREFIX}recherche/geo/`,\n\n  getStatistics: `${API_GROUP_PREFIX}:groupPk/stats/`,\n};\n\nexport const useMembershipRemoveRequestById = (requestId) => useSWR(requestId ? `/api/groupes/request-membership-remove/${requestId}` : null)\n\nexport const useRemoveMembershipRequestByGroup = (groupId) => {\n  return useSWR(`/api/groupes/${groupId}/request-membership-remove`)\n}\n\nexport const createRemoveMembershipRequest = async (groupId, memberId, details, reason) => axios.post(`/api/groupes/request-membership-remove/`, {\n  supportgroupId: groupId,\n  personId: memberId,\n  details,\n  reason: reason\n})\n\nexport const useMembershipRemoveRequestRefuse = (requestId) => axios.patch(`/api/groupes/request-membership-remove/${requestId}/refuse`)\n\nexport const useMembershipRemoveRequestValidate = (requestId) => axios.patch(`/api/groupes/request-membership-remove/${requestId}/validate`)\n\nexport const appendQueryParams = (endpoint, params, querystringParams) => {\n  if (params) {\n    Object.entries(params).forEach(([key, value]) => {\n      endpoint = endpoint.replace(`:${key}`, value);\n    });\n  }\n\n  if (querystringParams) {\n    endpoint += `?${querystring.stringify(querystringParams, {\n      arrayFormat: \"comma\",\n    })}`;\n  }\n\n  return endpoint;\n}\n\nexport const getGroupEndpoint = (key, params, querystringParams) => {\n  let endpoint = ENDPOINT[key] || key;\n\n  return appendQueryParams(endpoint, params, querystringParams);\n};\n\nexport const formatMessage = (message) => {\n  const data = {\n    ...message,\n    linkedEvent: (message.linkedEvent && message.linkedEvent.id) || null,\n  };\n\n  if (data.attachment && typeof data.attachment.file === \"string\") {\n    data.attachment = undefined;\n  }\n\n  return data.attachment ? objectToFormData({...data, attachmentCreate: data.attachment, attachment: null}) : data;\n};\n\nexport const createMessage = async (groupPk, message) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"createMessage\", { groupPk });\n  const body = formatMessage(message);\n\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const createPrivateMessage = async (groupPk, message) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"createPrivateMessage\", { groupPk });\n  const body = formatMessage(message);\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateMessage = async (message) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"updateMessage\", { messagePk: message.id });\n  const body = formatMessage(message);\n  try {\n    const response = await axios.patch(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getMessageNotification = async (messagePk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"messageNotification\", {\n    messagePk,\n  });\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateMessageNotification = async (messagePk, isMuted) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"messageNotification\", {\n    messagePk,\n  });\n  try {\n    const response = await axios.put(url, { isMuted });\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateMessageLock = async (messagePk, isLocked) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"messageLocked\", {\n    messagePk,\n  });\n  try {\n    const response = await axios.put(url, { isLocked });\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const deleteMessage = async (message) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"deleteMessage\", { messagePk: message.id });\n  try {\n    const response = await axios.delete(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getMessageParticipants = async (messagePk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"messageParticipants\", { messagePk });\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const reportMessage = async (message) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"report\");\n  const body = {\n    object_id: message.id,\n    content_type: \"msgs.supportgroupmessage\",\n  };\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getComments = async (messagePk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"getComments\", { messagePk });\n  try {\n    const response = await axios.post(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const createComment = async (messagePk, data) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"createComment\", { messagePk });\n  const body = formatMessage(data);\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const deleteComment = async (comment) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"deleteComment\", { commentPk: comment.id });\n  try {\n    const response = await axios.delete(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const reportComment = async (comment) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"report\");\n  const body = {\n    object_id: comment.id,\n    content_type: \"msgs.supportgroupmessagecomment\",\n  };\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const joinGroup = async (groupPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"joinGroup\", { groupPk });\n  try {\n    const response = await axios.post(url, {});\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const followGroup = async (groupPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"followGroup\", { groupPk });\n  try {\n    const response = await axios.post(url, {});\n    result.data = response.data;\n  } catch (e) {\n    result.error = e?.response?.data || e.message;\n  }\n\n  return result;\n};\n\nexport const quitGroup = async (groupPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"quitGroup\", { groupPk });\n  try {\n    const response = await axios.delete(url, {});\n    result.data = response.data;\n  } catch (e) {\n    result.error = e?.response?.data || e.message;\n  }\n\n  return result;\n};\n\nexport const updateGroup = async (groupPk, data) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"updateGroup\", { groupPk });\n  let headers = undefined;\n  let body = data;\n\n  if (body.image) {\n    body = new FormData();\n    Object.keys(data).forEach((e) => {\n      body.append(e, data[e]);\n    });\n  }\n\n  try {\n    const response = await axios.patch(url, body, { headers });\n    result.data = response.data;\n  } catch (e) {\n    if (e.response && e.response.data) {\n      result.error =\n        e.response.status === 400 && data.image\n          ? { image: \"La taille du fichier ne doit pas dépasser le 2.5 Mo\" }\n          : e.response.data;\n    } else {\n      result.error = e.message;\n    }\n  }\n\n  return result;\n};\n\nexport const inviteToGroup = async (groupPk, data) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"inviteToGroup\", { groupPk });\n\n  try {\n    const response = await axios.post(url, data);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const setAllMessagesRead = async () => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  try {\n    const response = await axios.get(ENDPOINT.setAllMessagesRead);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getMembers = async (groupPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"getMembers\", { groupPk });\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getMemberPersonalInformation = async (memberPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"getMemberPersonalInformation\", {\n    memberPk,\n  });\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateMember = async (memberPk, data) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"updateMember\", { memberPk });\n\n  try {\n    const response = await axios.patch(url, data);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getFinance = async (groupPk) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"getFinance\", { groupPk });\n\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const createGroupLink = async (groupPk, body) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n\n  const url = getGroupEndpoint(\"createGroupExternalLink\", { groupPk });\n\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateGroupLink = async (groupPk, linkPk, body) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n\n  const url = getGroupEndpoint(\"groupExternalLink\", {\n    groupPk,\n    linkPk,\n  });\n\n  try {\n    const response = await axios.put(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const saveGroupLink = (groupPk, link) => {\n  const body = {\n    url: encodeURI(\n      link.url.includes(\"http\")\n        ? link.url.trim()\n        : `https://${link.url.trim()}`,\n    ),\n    label: link.label,\n  };\n  return link.id\n    ? updateGroupLink(groupPk, link.id, body)\n    : createGroupLink(groupPk, body);\n};\n\nexport const deleteGroupLink = async (groupPk, linkPk) => {\n  const result = {\n    success: false,\n    error: null,\n  };\n\n  const url = getGroupEndpoint(\"groupExternalLink\", { groupPk, linkPk });\n\n  try {\n    await axios.delete(url);\n    result.success = true;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const searchGroups = async (searchTerms, params = {}) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"searchGroups\");\n  try {\n    const response = await axios.get(url, {\n      params: { ...params, q: searchTerms },\n    });\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || { global: e.message };\n  }\n\n  return result;\n};\n\nexport const updateOwnMembership = async (groupPk, data) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = getGroupEndpoint(\"updateOwnMembership\", { groupPk });\n\n  try {\n    const response = await axios.patch(url, data);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n"],"names":["REFRESH_INTERVAL","useUnreadMessageCount","isReady","setIsReady","useState","data","session","useSWRImmutable","useSWR","refreshInterval","dedupingInterval","focusThrottleInterval","shouldRetryOnError","revalidateIfStale","useEffect","user","unreadMessageCount","isNaN","parseInt","useCommentsSWR","messagePk","autorefresh","_data","_data2","error","isValidating","mutate","size","setSize","useSWRInfinite","index","revalidateAll","undefined","comments","useMemo","commentsIds","Array","isArray","forEach","results","comment","id","push","reverse","map","isLoadingInitialData","isLoadingMore","commentsCount","length","count","isEmpty","isReachingEnd","isRefreshing","loadMore","useCallback","isAutoRefreshPausedRef","useRef","useMessageSWR","_data3","_data4","dispatch","useDispatch","pathname","useCurrentLocation","errorMessages","isValidatingMessages","mutateMessages","revalidateOnFocus","revalidateOnReconnect","messageRecipients","currentMessage","mutateMessage","uuidValidate","messages","messageIds","message","messageCount","currentMessageId","onSelectMessage","useSelectMessage","setBackLink","route","label","_error$response","response","status","updatedMessage","find","m","lastUpdate","history","useHistory","doNotPush","replace","routeConfig","getLink","backLink","useMessageActions","selectedMessage","mutateComments","shouldDismissAction","isLoading","setIsLoading","selectedGroupEvents","setSelectedGroupEvents","selectedComment","setSelectedComment","messageAction","setMessageAction","messageErrors","setMessageErrors","commentErrors","setCommentErrors","canWriteNewMessage","canEditSelectedMessage","group","some","r","isAuthor","_selectedMessage$auth","_selectedComment$auth","author","getSelectedGroupEvents","async","current","events","axios","get","e","saveMessage","groupAPI","details","writeNewComment","onDelete","onReport","writeNewMessage","editMessage","confirmDelete","confirmReport","confirmReportComment","confirmDeleteComment","dismissMessageAction","API_GROUP_PREFIX","ENDPOINT","getGroup","getGroupSuggestions","joinGroup","followGroup","updateOwnMembership","quitGroup","getUpcomingEvents","getPastEvents","getPastEventReports","getEventsJoinedByGroup","getMessages","getMessage","createMessage","createPrivateMessage","updateMessage","deleteMessage","messageNotification","messageLocked","messageParticipants","getComments","createComment","deleteComment","setAllMessagesRead","getMembers","updateGroup","inviteToGroup","getMemberPersonalInformation","updateMember","getFinance","report","createGroupExternalLink","groupExternalLink","searchGroups","geoSearchGroups","getStatistics","useMembershipRemoveRequestById","requestId","useRemoveMembershipRequestByGroup","groupId","createRemoveMembershipRequest","memberId","reason","post","supportgroupId","personId","useMembershipRemoveRequestRefuse","patch","useMembershipRemoveRequestValidate","appendQueryParams","endpoint","params","querystringParams","Object","entries","key","value","querystring","stringify","arrayFormat","getGroupEndpoint","formatMessage","_objectSpread","linkedEvent","attachment","file","objectToFormData","attachmentCreate","groupPk","result","url","body","updateMessageNotification","isMuted","put","updateMessageLock","isLocked","delete","reportMessage","object_id","content_type","commentPk","reportComment","_e$response","_e$response2","headers","image","FormData","keys","append","memberPk","saveGroupLink","link","encodeURI","includes","trim","linkPk","updateGroupLink","createGroupLink","deleteGroupLink","success","searchTerms","q","global"],"sourceRoot":""}