feat: inline card endDate info

This commit is contained in:
hamster1963 2024-12-02 16:11:54 +08:00
parent 91677dfd90
commit 32e308f4f7

View File

@ -1,7 +1,12 @@
import ServerFlag from "@/components/ServerFlag"; import ServerFlag from "@/components/ServerFlag";
import ServerUsageBar from "@/components/ServerUsageBar"; import ServerUsageBar from "@/components/ServerUsageBar";
import { cn, formatNezhaInfo } from "@/lib/utils"; import {
cn,
formatNezhaInfo,
getDaysBetweenDates,
parsePublicNote,
} from "@/lib/utils";
import { NezhaServer } from "@/types/nezha-api"; import { NezhaServer } from "@/types/nezha-api";
import { Card } from "./ui/card"; import { Card } from "./ui/card";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
@ -35,10 +40,27 @@ export default function ServerCardInline({
uptime, uptime,
net_in_transfer, net_in_transfer,
net_out_transfer, net_out_transfer,
public_note,
} = formatNezhaInfo(now, serverInfo); } = formatNezhaInfo(now, serverInfo);
const showFlag = true; const showFlag = true;
const parsedData = parsePublicNote(public_note);
let daysLeft = 0;
let isNeverExpire = false;
if (parsedData?.billingDataMod?.endDate) {
if (parsedData.billingDataMod.endDate.startsWith("0000-00-00")) {
isNeverExpire = true;
} else {
daysLeft = getDaysBetweenDates(
parsedData.billingDataMod.endDate,
new Date().toISOString(),
);
}
}
return online ? ( return online ? (
<section> <section>
<Card <Card
@ -60,7 +82,7 @@ export default function ServerCardInline({
> >
{showFlag ? <ServerFlag country_code={country_code} /> : null} {showFlag ? <ServerFlag country_code={country_code} /> : null}
</div> </div>
<div className="relative"> <div className="relative flex flex-col">
<p <p
className={cn( className={cn(
"break-all font-bold tracking-tight", "break-all font-bold tracking-tight",
@ -69,6 +91,20 @@ export default function ServerCardInline({
> >
{name} {name}
</p> </p>
{parsedData &&
(daysLeft >= 0 ? (
<p className={cn("text-[10px] text-muted-foreground")}>
: {isNeverExpire ? "永久" : daysLeft + "天"}
</p>
) : (
<p
className={cn(
"text-[10px] text-muted-foreground text-red-600",
)}
>
: {daysLeft * -1}
</p>
))}
</div> </div>
</section> </section>
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">