feat: Added reset and pause subscription functionality, and updated the status display.

This commit is contained in:
web@ppanel
2025-12-29 05:51:24 +00:00
parent b27b9287be
commit bc451eea16
3 changed files with 120 additions and 0 deletions
@@ -1,4 +1,5 @@
import { Link } from "@tanstack/react-router";
import { Badge } from "@workspace/ui/components/badge";
import { Button } from "@workspace/ui/components/button";
import {
DropdownMenu,
@@ -15,6 +16,8 @@ import {
createUserSubscribe,
deleteUserSubscribe,
getUserSubscribe,
resetUserSubscribeToken,
stopUserSubscribe,
updateUserSubscribe,
} from "@workspace/ui/services/admin/user";
import { useRef, useState } from "react";
@@ -68,6 +71,53 @@ export default function UserSubscription({ userId }: { userId: number }) {
>
{t("copySubscription", "Copy Subscription")}
</Button>,
<ConfirmButton
cancelText={t("cancel", "Cancel")}
confirmText={t("confirm", "Confirm")}
description={t(
"resetTokenDescription",
"This will reset the subscription address and regenerate a new token."
)}
key="resetToken"
onConfirm={async () => {
await resetUserSubscribeToken({ user_subscribe_id: row.id });
toast.success(
t(
"resetTokenSuccess",
"Subscription address reset successfully"
)
);
ref.current?.refresh();
}}
title={t("confirmResetToken", "Confirm Reset Subscription Address")}
trigger={
<Button variant="outline">
{t("resetToken", "Reset Subscription Address")}
</Button>
}
/>,
<ConfirmButton
cancelText={t("cancel", "Cancel")}
confirmText={t("confirm", "Confirm")}
description={t(
"stopSubscribeDescription",
"This will stop the subscription temporarily. User will not be able to use it."
)}
key="stop"
onConfirm={async () => {
await stopUserSubscribe({ user_subscribe_id: row.id });
toast.success(
t("stopSubscribeSuccess", "Subscription stopped successfully")
);
ref.current?.refresh();
}}
title={t("confirmStopSubscribe", "Confirm Stop Subscription")}
trigger={
<Button variant="secondary">
{t("stopSubscribe", "Stop Subscription")}
</Button>
}
/>,
<ConfirmButton
cancelText={t("cancel", "Cancel")}
confirmText={t("confirm", "Confirm")}
@@ -99,6 +149,46 @@ export default function UserSubscription({ userId }: { userId: number }) {
header: t("subscriptionName", "Subscription Name"),
cell: ({ row }) => row.original.subscribe.name,
},
{
accessorKey: "status",
header: t("status", "Status"),
cell: ({ row }) => {
const status = row.getValue("status") as number;
const statusMap: Record<
number,
{
label: string;
variant: "default" | "secondary" | "destructive" | "outline";
}
> = {
0: { label: t("statusPending", "Pending"), variant: "outline" },
1: { label: t("statusActive", "Active"), variant: "default" },
2: {
label: t("statusFinished", "Finished"),
variant: "secondary",
},
3: {
label: t("statusExpired", "Expired"),
variant: "destructive",
},
4: {
label: t("statusDeducted", "Deducted"),
variant: "secondary",
},
5: {
label: t("statusStopped", "Stopped"),
variant: "destructive",
},
};
const statusInfo = statusMap[status] || {
label: "Unknown",
variant: "outline",
};
return (
<Badge variant={statusInfo.variant}>{statusInfo.label}</Badge>
);
},
},
{
accessorKey: "upload",
header: t("upload", "Upload"),