diff --git a/src/tribler/ui/src/components/layouts/Header.tsx b/src/tribler/ui/src/components/layouts/Header.tsx index 48e8f431b..82055f17c 100644 --- a/src/tribler/ui/src/components/layouts/Header.tsx +++ b/src/tribler/ui/src/components/layouts/Header.tsx @@ -12,10 +12,11 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle } from "../ui/dialog"; import { useEffect, useState } from "react"; import Cookies from "js-cookie"; import { DialogDescription } from "@radix-ui/react-dialog"; -import { Ban } from "lucide-react"; +import { Ban } from "lucide-react"; export function Header() { const [online, setOnline] = useState(true); + const [shutdownLogs, setShutdownLogs] = useState([]); const [searchParams, setSearchParams] = useSearchParams(); useEffect(() => { @@ -32,13 +33,30 @@ export function Header() { }, [searchParams]); useInterval(() => { - if (online !== triblerService.isOnline()) - setOnline(triblerService.isOnline()); + const onlineNow = triblerService.isOnline(); + if (online !== onlineNow) { + if (!online) + setShutdownLogs([]); + setOnline(onlineNow); + + } }, 1000); + useEffect(() => { + (async () => { triblerService.addEventListener("tribler_shutdown_state", OnShutdownEvent) })(); + return () => { + (async () => { triblerService.removeEventListener("tribler_shutdown_state", OnShutdownEvent) })(); + } + }, []); + + const OnShutdownEvent = (event: MessageEvent) => { + const data = JSON.parse(event.data); + setShutdownLogs(prevLogs => [...prevLogs, data.state]); + } + return ( <> - + 0}> { @@ -46,9 +64,23 @@ export function Header() { }} > - Failed to connect to Tribler - Tribler may not be running or your browser is missing a cookie.
- In latter case please re-open Tribler from the system tray
+ + {online + ? "Tribler is shutting down" + : (shutdownLogs.length > 0 + ? "Tribler has shutdown" + : "Failed to connect to Tribler")} + + + {!online && shutdownLogs.length === 0 + ? + Tribler may not be running or your browser is missing a cookie. +
In latter case please re-open Tribler from the system tray +
+ : + {shutdownLogs.map(log =>

{log}

)} +
+ }
diff --git a/src/tribler/ui/src/components/ui/simple-table.tsx b/src/tribler/ui/src/components/ui/simple-table.tsx index 6de72afcd..a70658dd0 100644 --- a/src/tribler/ui/src/components/ui/simple-table.tsx +++ b/src/tribler/ui/src/components/ui/simple-table.tsx @@ -129,6 +129,7 @@ function SimpleTable({ { if (!allowSelect && !allowMultiSelect) return