From 55bc081bfa5726dc94322b6ab0926b989affaba0 Mon Sep 17 00:00:00 2001 From: Egbert Bouman Date: Thu, 1 Aug 2024 20:44:44 +0200 Subject: [PATCH 1/2] Change cursor style for selectable table rows --- src/tribler/ui/src/components/ui/simple-table.tsx | 1 + 1 file changed, 1 insertion(+) 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 From ac39aca9ac97facecba5dfe540d4ef963249c939 Mon Sep 17 00:00:00 2001 From: Egbert Bouman Date: Thu, 1 Aug 2024 20:45:37 +0200 Subject: [PATCH 2/2] Display shutdown progress in webinterface --- .../ui/src/components/layouts/Header.tsx | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) 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}

)} +
+ }