Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2731 | Autoría | Ultima modificación | Ver Log |

import React, { createContext, useState } from 'react'

import { useFetch } from '@hooks'

export const InmailContext = createContext()

export default function InmailProvider({ children }) {
  const { data, isLoading } = useFetch('/inmail', null)
  const [composeModalShow, setComposeModalShow] = useState(false)
  const [replyModalShow, setReplyModalShow] = useState(false)
  const [selectedMessage, setSelectedMessage] = useState(null)

  const selectMessage = (message) => setSelectedMessage(message)

  const handleReply = (message) => {
    setSelectedMessage(message)
    setReplyModalShow(true)
  }

  const closeReply = () => {
    setSelectedMessage(null)
    setReplyModalShow(false)
  }

  const toggleComposeModal = () => {
    setComposeModalShow(!composeModalShow)
  }

  return (
    <InmailContext.Provider
      value={{
        loading: isLoading,
        messages: data?.messages ?? [],
        totalMessages: data?.total_messages ?? 0,
        totalPages: data?.total_pages ?? 1,
        currentPage: data?.current_page ?? 1,
        replyMessage: handleReply,
        selectedMessage,
        toggleComposeModal,
        closeReply,
        composeModalShow,
        replyModalShow,
        selectMessage
      }}
    >
      {children}
    </InmailContext.Provider>
  )
}