2024-04-23 22:51:11 +00:00
|
|
|
import { useState, useEffect } from "react"
|
|
|
|
import toastError from "../../errors/toastError"
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2024-04-23 22:51:11 +00:00
|
|
|
import api from "../../services/api"
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
const useTickets = ({
|
|
|
|
searchParam,
|
2023-07-12 14:54:29 +00:00
|
|
|
searchParamContent,
|
2022-01-06 01:26:15 +00:00
|
|
|
pageNumber,
|
|
|
|
status,
|
|
|
|
date,
|
|
|
|
showAll,
|
|
|
|
queueIds,
|
|
|
|
withUnreadMessages,
|
2022-10-25 14:16:36 +00:00
|
|
|
unlimited,
|
|
|
|
tab
|
2022-01-06 01:26:15 +00:00
|
|
|
}) => {
|
2024-04-23 22:51:11 +00:00
|
|
|
const [loading, setLoading] = useState(true)
|
|
|
|
const [hasMore, setHasMore] = useState(false)
|
|
|
|
const [tickets, setTickets] = useState([])
|
|
|
|
const [remoteTicketsControll, setRemoteTicketsControll] = useState([])
|
2022-10-25 14:16:36 +00:00
|
|
|
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
2022-10-25 14:16:36 +00:00
|
|
|
|
2024-04-23 22:51:11 +00:00
|
|
|
setLoading(true)
|
2022-01-06 01:26:15 +00:00
|
|
|
const delayDebounceFn = setTimeout(() => {
|
|
|
|
const fetchTickets = async () => {
|
2022-10-25 14:16:36 +00:00
|
|
|
try {
|
2022-10-02 06:22:44 +00:00
|
|
|
|
2024-04-23 22:51:11 +00:00
|
|
|
if ((tab === 'search') && (!searchParam || searchParam.trim().length === 0 || searchParam.trim().length > 40 || searchParam.endsWith(' '))) {
|
2022-10-02 06:22:44 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
const { data } = await api.get("/tickets", {
|
|
|
|
params: {
|
|
|
|
searchParam,
|
2023-07-12 14:54:29 +00:00
|
|
|
searchParamContent,
|
2022-01-06 01:26:15 +00:00
|
|
|
pageNumber,
|
|
|
|
status,
|
|
|
|
date,
|
|
|
|
showAll,
|
|
|
|
queueIds,
|
|
|
|
withUnreadMessages,
|
2022-04-18 18:21:28 +00:00
|
|
|
unlimited
|
2022-01-06 01:26:15 +00:00
|
|
|
},
|
2024-04-23 22:51:11 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
setTickets(data.tickets)
|
|
|
|
setHasMore(data.hasMore)
|
|
|
|
setLoading(false)
|
|
|
|
|
|
|
|
if (data?.remoteTicketsControll) {
|
|
|
|
setRemoteTicketsControll(data.remoteTicketsControll.map(t => +t))
|
|
|
|
}
|
2022-10-02 06:22:44 +00:00
|
|
|
|
|
|
|
|
2022-10-25 14:16:36 +00:00
|
|
|
|
2022-01-06 01:26:15 +00:00
|
|
|
} catch (err) {
|
2024-04-23 22:51:11 +00:00
|
|
|
setLoading(false)
|
|
|
|
toastError(err)
|
2022-01-06 01:26:15 +00:00
|
|
|
}
|
2024-04-23 22:51:11 +00:00
|
|
|
}
|
|
|
|
fetchTickets()
|
|
|
|
}, 500)
|
|
|
|
return () => clearTimeout(delayDebounceFn)
|
2022-01-06 01:26:15 +00:00
|
|
|
}, [
|
|
|
|
searchParam,
|
2023-07-12 14:54:29 +00:00
|
|
|
searchParamContent,
|
2022-01-06 01:26:15 +00:00
|
|
|
pageNumber,
|
|
|
|
status,
|
|
|
|
date,
|
|
|
|
showAll,
|
|
|
|
queueIds,
|
|
|
|
withUnreadMessages,
|
2022-10-25 14:16:36 +00:00
|
|
|
tab,
|
2022-04-18 18:21:28 +00:00
|
|
|
unlimited
|
2024-04-23 22:51:11 +00:00
|
|
|
])
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2024-04-23 22:51:11 +00:00
|
|
|
return { tickets, loading, hasMore, remoteTicketsControll }
|
|
|
|
}
|
2022-01-06 01:26:15 +00:00
|
|
|
|
2024-04-23 22:51:11 +00:00
|
|
|
export default useTickets
|