feat: Added the option to restore subscription, and updated the relevant description and confirmation information.

This commit is contained in:
web@ppanel 2025-12-29 05:59:30 +00:00
parent bc451eea16
commit 5f5c33987e
5 changed files with 47 additions and 18 deletions

View File

@ -79,6 +79,10 @@
"stopSubscribeDescription": "This will stop the subscription temporarily. User will not be able to use it.",
"stopSubscribeSuccess": "Subscription stopped successfully",
"confirmStopSubscribe": "Confirm Stop Subscription",
"resumeSubscribe": "Resume Subscription",
"resumeSubscribeDescription": "This will resume the subscription and allow the user to use it.",
"resumeSubscribeSuccess": "Subscription resumed successfully",
"confirmResumeSubscribe": "Confirm Resume Subscription",
"status": "Status",
"statusPending": "Pending",
"statusActive": "Active",

View File

@ -79,6 +79,10 @@
"stopSubscribeDescription": "这将暂时停止订阅。用户将无法使用。",
"stopSubscribeSuccess": "订阅已暂停",
"confirmStopSubscribe": "确认暂停订阅",
"resumeSubscribe": "恢复订阅",
"resumeSubscribeDescription": "这将恢复订阅,允许用户继续使用。",
"resumeSubscribeSuccess": "订阅已恢复",
"confirmResumeSubscribe": "确认恢复订阅",
"status": "状态",
"statusPending": "待处理",
"statusActive": "活跃",

View File

@ -17,7 +17,7 @@ import {
deleteUserSubscribe,
getUserSubscribe,
resetUserSubscribeToken,
stopUserSubscribe,
toggleUserSubscribeStatus,
updateUserSubscribe,
} from "@workspace/ui/services/admin/user";
import { useRef, useState } from "react";
@ -99,22 +99,43 @@ export default function UserSubscription({ userId }: { userId: number }) {
<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"
description={
row.status === 5
? t(
"resumeSubscribeDescription",
"This will resume the subscription and allow the user to use it."
)
: t(
"stopSubscribeDescription",
"This will stop the subscription temporarily. User will not be able to use it."
)
}
key="toggle"
onConfirm={async () => {
await stopUserSubscribe({ user_subscribe_id: row.id });
await toggleUserSubscribeStatus({ user_subscribe_id: row.id });
toast.success(
t("stopSubscribeSuccess", "Subscription stopped successfully")
row.status === 5
? t(
"resumeSubscribeSuccess",
"Subscription resumed successfully"
)
: t(
"stopSubscribeSuccess",
"Subscription stopped successfully"
)
);
ref.current?.refresh();
}}
title={t("confirmStopSubscribe", "Confirm Stop Subscription")}
title={
row.status === 5
? t("confirmResumeSubscribe", "Confirm Resume Subscription")
: t("confirmStopSubscribe", "Confirm Stop Subscription")
}
trigger={
<Button variant="secondary">
{t("stopSubscribe", "Stop Subscription")}
{row.status === 5
? t("resumeSubscribe", "Resume Subscription")
: t("stopSubscribe", "Stop Subscription")}
</Button>
}
/>,

View File

@ -2004,10 +2004,6 @@ declare namespace API {
id: number;
};
type StopUserSubscribeRequest = {
user_subscribe_id: number;
};
type StripePayment = {
method: string;
client_secret: string;
@ -2167,6 +2163,10 @@ declare namespace API {
enable: boolean;
};
type ToggleUserSubscribeStatusRequest = {
user_subscribe_id: number;
};
type TosConfig = {
tos_content: string;
};

View File

@ -465,13 +465,13 @@ export async function resetUserSubscribeTraffic(
);
}
/** Stop user subscribe POST /v1/admin/user/subscribe/stop */
export async function stopUserSubscribe(
body: API.StopUserSubscribeRequest,
/** Stop user subscribe POST /v1/admin/user/subscribe/toggle */
export async function toggleUserSubscribeStatus(
body: API.ToggleUserSubscribeStatusRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/user/subscribe/stop`,
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/user/subscribe/toggle`,
{
method: "POST",
headers: {