{"version":3,"file":"static/components/1163-be48f5a802ebb10e.js?cv=7","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/common/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/msgs/components/common/hooks.js"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useSessionStorage } from \"react-use\";\nimport useSWR from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport {\n  setActivityAsInteracted,\n  getActivityEndpoint,\n} from \"@agir/activity/common/api\";\nimport { ACTIVITY_STATUS } from \"@agir/activity/common/helpers\";\n\nconst ACTIVITY_PAGE_SIZE = 10;\n\nexport const useActivities = () => {\n  const { data, error, mutate, size, setSize, isValidating } = useSWRInfinite(\n    (index) =>\n      getActivityEndpoint(\"activities\", {\n        page: index + 1,\n        pageSize: ACTIVITY_PAGE_SIZE,\n      }),\n  );\n\n  const activities = useMemo(() => {\n    const activities = {};\n    const activityIds = [];\n    if (Array.isArray(data)) {\n      data.forEach(({ results }) => {\n        if (Array.isArray(results)) {\n          results.forEach((activity) => {\n            if (!activities[activity.id]) {\n              activities[activity.id] = activity;\n              activityIds.push(activity.id);\n            }\n          });\n        }\n      });\n    }\n    return activityIds.map((id) => activities[id]);\n  }, [data]);\n\n  const isLoadingInitialData = !data && !error;\n\n  const isLoadingMore =\n    isLoadingInitialData ||\n    (size > 0 && data && typeof data[size - 1] === \"undefined\");\n\n  const activityCount = (data && data[data.length - 1]?.count) || 0;\n  const isEmpty = activityCount === 0;\n  const isReachingEnd =\n    isEmpty ||\n    activities.length === activityCount ||\n    (data && data[data.length - 1]?.results?.length < ACTIVITY_PAGE_SIZE);\n  const isRefreshing = isValidating && data && data.length === size;\n\n  const loadMore = useCallback(() => setSize(size + 1), [setSize, size]);\n\n  return {\n    activities,\n    error,\n    isLoadingInitialData,\n    isLoadingMore,\n    isRefreshing,\n    loadMore: isEmpty || isReachingEnd ? undefined : loadMore,\n    mutate,\n  };\n};\n\nexport const useUnreadActivityCount = () => {\n  const [isReady, setIsReady] = useState(false);\n  const { data: session } = useSWR(\"/api/session/\");\n  const { data } = useSWR(\n    isReady && getActivityEndpoint(\"unreadActivityCount\"),\n    {\n      dedupingInterval: 10000,\n      focusThrottleInterval: 10000,\n    },\n  );\n\n  useEffect(() => {\n    if (session?.user) {\n      setIsReady(true);\n    }\n  }, [session]);\n\n  return data?.unreadActivityCount || 0;\n};\n\nexport const useCustomAnnouncement = (slug, shouldPause = true) => {\n  const [wasPaused, setIsPaused] = useSessionStorage(`AP__${slug}__p`);\n  const { data: session } = useSWR(\"/api/session/\");\n\n  const isPaused = shouldPause && wasPaused;\n  const { data, mutate, error } = useSWRImmutable(\n    !isPaused && session?.user && slug\n      ? getActivityEndpoint(\"customAnnouncement\", { slug })\n      : null,\n  );\n  const errorStatus = error?.response?.status;\n  const announcement =\n    !data?.id || data?.status === ACTIVITY_STATUS.STATUS_INTERACTED\n      ? null\n      : data;\n\n  const activityId = announcement?.activityId;\n  const dismissCallback = useCallback(async () => {\n    if (!activityId) {\n      return;\n    }\n    await setActivityAsInteracted(activityId);\n\n    mutate(\n      (announcement) => ({\n        ...announcement,\n        status: ACTIVITY_STATUS.STATUS_INTERACTED,\n      }),\n      false,\n    );\n  }, [activityId, mutate]);\n\n  useEffect(() => {\n    shouldPause && errorStatus === 404 && setIsPaused(true);\n  }, [shouldPause, setIsPaused, errorStatus]);\n\n  const isLoading =\n    !isPaused && errorStatus !== 404 && typeof data === \"undefined\";\n\n  return [announcement, dismissCallback, isLoading];\n};\n","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"],"names":["isReady","setIsReady","useState","session","useSWR","data","getActivityEndpoint","useEffect","slug","_error_response","shouldPause","wasPaused","setIsPaused","useSessionStorage","isPaused","mutate","error","useSWRImmutable","errorStatus","announcement","ACTIVITY_STATUS","activityId","dismissCallback","useCallback","setActivityAsInteracted","_data_","_data__results","size","setSize","isValidating","useSWRInfinite","index","activities","useMemo","activityIds","Array","results","activity","id","isLoadingInitialData","isLoadingMore","activityCount","isEmpty","isReachingEnd","isRefreshing","loadMore","undefined","useSelectMessage","history","useHistory","messagePk","doNotPush","fn","routeConfig","user","messageRecipients","selectedMessage","onSelectMessage","mutateMessages","mutateComments","shouldDismissAction","useRef","isLoading","setIsLoading","selectedGroupEvents","setSelectedGroupEvents","selectedComment","setSelectedComment","messageAction","setMessageAction","messageErrors","setMessageErrors","commentErrors","setCommentErrors","canWriteNewMessage","canEditSelectedMessage","r","isAuthor","_selectedMessage_author","_selectedComment_author","getSelectedGroupEvents","group","events","axios","e","saveMessage","message","groupAPI","writeNewComment","comment","onDelete","onReport","writeNewMessage","editMessage","confirmDelete","confirmReport","confirmReportComment","confirmDeleteComment","dismissMessageAction","isNaN","parseInt","autorefresh","COMMENTS_PAGE_SIZE","comments","commentsIds","commentsCount","isAutoRefreshPausedRef","dispatch","useDispatch","pathname","useCurrentLocation","errorMessages","isValidatingMessages","MESSAGES_PAGE_SIZE","currentMessage","mutateMessage","uuidValidate","messages","messageIds","messageCount","currentMessageId","setBackLink","updatedMessage","m"],"mappings":"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"}