← marzneshin
/
v0.6.2
/
dashboard/src/modules/users/components/dialogs/settings/user-info/subscription-actions.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/settings/user-info/subscription-actions.tsx
· TypeScript
Blame
Raw
1import { Button, HStack } from "@marzneshin/components";
2import { useTranslation } from "react-i18next";
3import { getSubscriptionLink } from "@marzneshin/utils";
4import { useUserSubscriptionRevokeCmd } from "@marzneshin/modules/users";
5import { CopyToClipboardButton } from "@marzneshin/components";
6import { SquareCode } from "lucide-react";
7import type { QRCodeProps } from "./qrcode";
8import type { FC } from 'react';
9
10export const SubscriptionActions: FC<QRCodeProps> = ({ entity }) => {
11 const subscribeQrLink = getSubscriptionLink(entity.subscription_url);
12 const { mutate: revokeSubscription } = useUserSubscriptionRevokeCmd();
13 const { t } = useTranslation();
14 return (
15 <HStack className="w-full items-center my-2">
16 <CopyToClipboardButton
17 text={subscribeQrLink}
18 successMessage={t("page.users.settings.subscription_link.copied")}
19 copyLabel={t("page.users.settings.subscription_link.copy")}
20 errorLabel={t("page.users.settings.subscription_link.error")}
21 copyIcon={SquareCode}
22 className="w-1/2"
23 />
24 <Button variant="destructive" className="w-1/2" onClick={() => revokeSubscription(entity)}>
25 {t("page.users.revoke_subscription")}
26 </Button>
27 </HStack>
28 );
29};