Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
2707 stevensc 1
import React, { createContext, useState } from 'react'
2698 stevensc 2
 
2780 stevensc 3
import { useFetch } from '@hooks'
2698 stevensc 4
 
5
export const InmailContext = createContext()
6
 
7
export default function InmailProvider({ children }) {
8
  const { data, isLoading } = useFetch('/inmail', null)
2707 stevensc 9
  const [composeModalShow, setComposeModalShow] = useState(false)
10
  const [replyModalShow, setReplyModalShow] = useState(false)
2725 stevensc 11
  const [selectedMessage, setSelectedMessage] = useState(null)
2698 stevensc 12
 
2727 stevensc 13
  const selectMessage = (message) => setSelectedMessage(message)
14
 
2725 stevensc 15
  const handleReply = (message) => {
16
    setSelectedMessage(message)
2707 stevensc 17
    setReplyModalShow(true)
18
  }
19
 
2731 stevensc 20
  const closeReply = () => {
21
    setSelectedMessage(null)
22
    setReplyModalShow(false)
23
  }
24
 
2707 stevensc 25
  const toggleComposeModal = () => {
26
    setComposeModalShow(!composeModalShow)
27
  }
28
 
2698 stevensc 29
  return (
30
    <InmailContext.Provider
31
      value={{
32
        loading: isLoading,
2699 stevensc 33
        messages: data?.messages ?? [],
34
        totalMessages: data?.total_messages ?? 0,
35
        totalPages: data?.total_pages ?? 1,
2707 stevensc 36
        currentPage: data?.current_page ?? 1,
37
        replyMessage: handleReply,
2725 stevensc 38
        selectedMessage,
2707 stevensc 39
        toggleComposeModal,
2731 stevensc 40
        closeReply,
2718 stevensc 41
        composeModalShow,
2727 stevensc 42
        replyModalShow,
43
        selectMessage
2698 stevensc 44
      }}
45
    >
46
      {children}
47
    </InmailContext.Provider>
48
  )
49
}