import React, { useEffect } from 'react' import { Toast } from 'react-bootstrap' import { deleteAlertMessage, reconnectSora, setSoraReconnecting } from '@/app/actions' import { useAppDispatch, useAppSelector } from '@/app/hooks' import type { AlertMessage } from '@/types' import { formatUnixtime } from '@/utils' const Reconnect: React.FC = () => { const dispatch = useAppDispatch() const reconnectingTrials = useAppSelector((state) => state.soraContents.reconnectingTrials) const onClose = (): void => { dispatch(setSoraReconnecting(false)) } useEffect(() => { dispatch(reconnectSora()) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( Reconnect

Reconnecting... (trials {reconnectingTrials})

) } const Alert: React.FC = (props) => { const dispatch = useAppDispatch() const onClose = (): void => { dispatch(deleteAlertMessage(props.timestamp)) } const bgClassName = props.type === 'error' ? 'bg-danger' : 'bg-info' return ( {props.title} {formatUnixtime(props.timestamp)}

{props.message}

) } export const AlertMessages: React.FC = () => { const alertMessages = useAppSelector((state) => state.alertMessages) const reconnecting = useAppSelector((state) => state.soraContents.reconnecting) return (
{reconnecting ? : null} {alertMessages.map((alertMessage) => { return })}
) }