import * as React from "react";
import { useHistory } from "react-router-dom";
import { useDesktopTitlebar } from "~/hooks/useDesktopTitlebar";
import useToasts from "~/hooks/useToasts";
import Desktop from "~/utils/Desktop";

export default function DesktopEventHandler() {
  useDesktopTitlebar();
  const history = useHistory();
  const { showToast } = useToasts();

  React.useEffect(() => {
    Desktop.bridge?.redirect((path: string, replace = false) => {
      if (replace) {
        history.replace(path);
      } else {
        history.push(path);
      }
    });

    Desktop.bridge?.updateDownloaded(() => {
      showToast("An update is ready to install.", {
        type: "info",
        timeout: Infinity,
        action: {
          text: "Install now",
          onClick: () => {
            Desktop.bridge?.restartAndInstall();
          },
        },
      });
    });

    Desktop.bridge?.focus(() => {
      window.document.body.classList.remove("backgrounded");
    });

    Desktop.bridge?.blur(() => {
      window.document.body.classList.add("backgrounded");
    });
  }, [history, showToast]);

  return null;
}
