import { Alert, Box, Snackbar, Button } from '@mui/material';
import { useEffect, useState } from 'react';

export const Notifier = () => {
  const [open, setOpen] = useState(false);
  const [message, setMessage] = useState('');
  const [severity, setSeverity] = useState<
    'error' | 'warning' | 'info' | 'success'
  >('info');
  const [hasUpdateAvailable, setHasUpdateAvailable] = useState(false);

  useEffect(() => {
    // Слушаем событие о наличии обновления
    window.electron.ipcRenderer.on('update-available', () => {
      setMessage('Доступно новое обновление');
      setSeverity('info');
      setHasUpdateAvailable(true);
      setOpen(true);
    });

    return () => {
      // Отписываемся от события при размонтировании
      window.electron.ipcRenderer.removeAllListeners('update-available');
    };
  }, []);

  const handleClose = () => {
    setOpen(false);
  };

  const handleUpdate = () => {
    window.electron.ipcRenderer.invoke('install-update');
    setOpen(false);
  };

  return (
    <Box>
      <Snackbar
        open={open}
        autoHideDuration={hasUpdateAvailable ? null : 6000}
        onClose={handleClose}
      >
        <Alert
          severity={severity}
          action={
            hasUpdateAvailable && (
              <>
                <Button color="primary" size="small" onClick={handleUpdate}>
                  Обновить сейчас
                </Button>
                <Button color="secondary" size="small" onClick={handleClose}>
                  Позже
                </Button>
              </>
            )
          }
        >
          {message}
        </Alert>
      </Snackbar>
    </Box>
  );
};
