blob: b28933b3bc6174a0a0ec378a37f0877548e499ca [file] [log] [blame]
import React, {useEffect, useState} from 'react';
import {
Alert,
AlertActionCloseButton, AlertGroup,
} from '@patternfly/react-core';
import '../designer/karavan.css';
import {ToastMessage} from "../api/ProjectModels";
import {ProjectEventBus} from "../api/ProjectEventBus";
export function Notification () {
const [alerts, setAlerts] = useState<ToastMessage[]>([]);
useEffect(() => {
console.log("Notification Start");
const sub = ProjectEventBus.onAlert()?.subscribe((result: ToastMessage) => {
console.log(result);
setAlerts(prevState => {
return [...prevState, result];
});
});
return () => {
console.log("end");
sub?.unsubscribe();
};
}, []);
useEffect(() => {
console.log("Notification alert");
}, [alerts]);
return (
<AlertGroup isToast isLiveRegion>
{alerts.map((e: ToastMessage) => (
<Alert key={e.id} className="main-alert" variant={e.variant} title={e.title}
timeout={e.variant === "success" ? 1000 : 2000}
actionClose={<AlertActionCloseButton onClose={() => {
setAlerts(prevState => {
return [...prevState.filter(t => t.id !== e.id)];
});
}}/>}>
{e.text}
</Alert>
))}
</AlertGroup>
)
}