Various tweaks and backend improvements

This commit is contained in:
Jamie Curnow
2025-10-28 23:10:00 +10:00
parent 7331cb3675
commit 3b9beaeae5
12 changed files with 85 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
import OverlayTrigger from "react-bootstrap/OverlayTrigger";
import Popover from "react-bootstrap/Popover";
import type { DeadHost, ProxyHost, RedirectionHost } from "src/api/backend";
import type { DeadHost, ProxyHost, RedirectionHost, Stream } from "src/api/backend";
import { T } from "src/locale";
const getSection = (title: string, items: ProxyHost[] | RedirectionHost[] | DeadHost[]) => {
@@ -23,13 +23,34 @@ const getSection = (title: string, items: ProxyHost[] | RedirectionHost[] | Dead
);
};
const getSectionStream = (items: Stream[]) => {
if (items.length === 0) {
return null;
}
return (
<>
<div>
<strong>
<T id="streams" />
</strong>
</div>
{items.map((stream) => (
<div key={stream.id} className="ms-1">
{stream.forwardingHost}:{stream.forwardingPort}
</div>
))}
</>
);
};
interface Props {
proxyHosts: ProxyHost[];
redirectionHosts: RedirectionHost[];
deadHosts: DeadHost[];
streams: Stream[];
}
export function CertificateInUseFormatter({ proxyHosts, redirectionHosts, deadHosts }: Props) {
const totalCount = proxyHosts?.length + redirectionHosts?.length + deadHosts?.length;
export function CertificateInUseFormatter({ proxyHosts, redirectionHosts, deadHosts, streams }: Props) {
const totalCount = proxyHosts?.length + redirectionHosts?.length + deadHosts?.length + streams?.length;
if (totalCount === 0) {
return (
<span className="badge bg-red-lt">
@@ -41,6 +62,7 @@ export function CertificateInUseFormatter({ proxyHosts, redirectionHosts, deadHo
proxyHosts.sort();
redirectionHosts.sort();
deadHosts.sort();
streams.sort();
const popover = (
<Popover id="popover-basic">
@@ -48,6 +70,7 @@ export function CertificateInUseFormatter({ proxyHosts, redirectionHosts, deadHo
{getSection("proxy-hosts", proxyHosts)}
{getSection("redirection-hosts", redirectionHosts)}
{getSection("dead-hosts", deadHosts)}
{getSectionStream(streams)}
</Popover.Body>
</Popover>
);

View File

@@ -1,4 +1,5 @@
import { IconArrowsCross, IconBolt, IconBoltOff, IconDisc, IconLock, IconShield, IconUser } from "@tabler/icons-react";
import cn from "classnames";
import type { AuditLog } from "src/api/backend";
import { DateTimeFormat, T } from "src/locale";
@@ -32,7 +33,7 @@ const getColorForAction = (action: string) => {
};
const getIcon = (row: AuditLog) => {
const c = getColorForAction(row.action);
const c = cn(getColorForAction(row.action), "me-1");
let ico = null;
switch (row.objectType) {
case "user":