front-hub/src/components/ProtectedLayout.tsx

86 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-11-05 23:33:40 +00:00
import { Outlet } from "react-router-dom"
import Navbar from "./NavbarSite/Navbar"
2023-09-15 21:00:02 +00:00
import {
2023-11-05 23:33:40 +00:00
Ticket,
getMessageFromFetchError,
useAllTariffsFetcher,
usePrivilegeFetcher,
useSSESubscription,
useTicketsFetcher,
useToken,
} from "@frontend/kitui"
import { updateTickets, setTicketCount, useTicketStore, setTicketsFetchState } from "@root/stores/tickets"
import { enqueueSnackbar } from "notistack"
import { updateTariffs } from "@root/stores/tariffs"
import { useCustomTariffs } from "@root/utils/hooks/useCustomTariffs"
import { setCustomTariffs } from "@root/stores/customTariffs"
import { useDiscounts } from "@root/utils/hooks/useDiscounts"
import { setDiscounts } from "@root/stores/discounts"
import { setPrivileges } from "@root/stores/privileges"
2023-08-29 13:38:05 +00:00
export default function ProtectedLayout() {
2023-11-05 23:33:40 +00:00
const token = useToken()
const ticketApiPage = useTicketStore((state) => state.apiPage)
const ticketsPerPage = useTicketStore((state) => state.ticketsPerPage)
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
useSSESubscription<Ticket>({
url: `https://hub.pena.digital/heruvym/subscribe?Authorization=${token}`,
onNewData: (data) => {
updateTickets(data.filter((d) => Boolean(d.id)))
setTicketCount(data.length)
},
marker: "ticket",
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
useTicketsFetcher({
url: "https://hub.pena.digital/heruvym/getTickets",
ticketsPerPage,
ticketApiPage,
onSuccess: (result) => {
if (result.data) updateTickets(result.data)
setTicketCount(result.count)
},
onError: (error: Error) => {
const message = getMessageFromFetchError(error)
if (message) enqueueSnackbar(message)
},
onFetchStateChange: setTicketsFetchState,
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
useAllTariffsFetcher({
onSuccess: updateTariffs,
onError: (error) => {
const errorMessage = getMessageFromFetchError(error)
if (errorMessage) enqueueSnackbar(errorMessage)
},
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
useCustomTariffs({
onNewUser: setCustomTariffs,
onError: (error) => {
if (error) enqueueSnackbar(error)
},
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
useDiscounts({
onNewDiscounts: setDiscounts,
onError: (error) => {
const message = getMessageFromFetchError(error)
if (message) enqueueSnackbar(message)
},
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
usePrivilegeFetcher({
onSuccess: setPrivileges,
onError: (error) => {
console.log("usePrivilegeFetcher error :>> ", error)
},
})
2023-08-29 13:38:05 +00:00
2023-11-05 23:33:40 +00:00
return (
<Navbar>
<Outlet />
</Navbar>
)
2023-08-29 13:38:05 +00:00
}