Skip to content

Commit a9bbe39

Browse files
committed
feat(login): show latency
1 parent 0d91e05 commit a9bbe39

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

app/login/status.action.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
"use server";
22

3-
export async function getUpstreamStatus(): Promise<boolean> {
3+
export async function getUpstreamLatency(): Promise<number> {
44
try {
5-
const response = await fetch("https://api.dbplay.app");
6-
return response.ok;
5+
const start = Date.now();
6+
7+
const response = await fetch("https://api.dbplay.app", { method: "HEAD" });
8+
if (!response.ok) {
9+
return -1;
10+
}
11+
12+
return Date.now() - start;
713
} catch (error) {
814
console.error("Error getting upstream status:", error);
9-
return false;
15+
return -1;
1016
}
1117
}

app/login/status.tsx

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { Circle } from "lucide-react";
2-
import { getUpstreamStatus } from "./status.action";
2+
import { getUpstreamLatency } from "./status.action";
3+
import {
4+
Tooltip,
5+
TooltipContent,
6+
TooltipTrigger,
7+
} from "@/components/ui/tooltip";
38

49
export async function UpstreamStatus() {
5-
const status = await getUpstreamStatus();
10+
const latency = await getUpstreamLatency();
611

7-
if (!status) {
12+
if (latency === -1 || latency > 1000) {
813
return (
914
<div className="flex items-center gap-2">
1015
<Circle className="size-2.5 fill-red-500 text-red-500" />
@@ -16,12 +21,17 @@ export async function UpstreamStatus() {
1621
}
1722

1823
return (
19-
<div className="flex items-center gap-2">
20-
<Circle className="size-2.5 fill-green-500 text-green-500" />
21-
<div className="text-sm">
22-
<span>服務正常 🙌</span>
23-
</div>
24-
</div>
24+
<Tooltip>
25+
<TooltipTrigger>
26+
<div className="flex items-center gap-2">
27+
<Circle className="size-2.5 fill-green-500 text-green-500" />
28+
<div className="text-sm">
29+
<span>服務正常 🙌</span>
30+
</div>
31+
</div>
32+
</TooltipTrigger>
33+
<TooltipContent>延遲:{latency}ms</TooltipContent>
34+
</Tooltip>
2535
);
2636
}
2737

0 commit comments

Comments
 (0)