gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/settings/user-info/table.tsx · v0.6.0
Source
1 cba9caa Dawsh 2y ago import {
2 cba9caa Dawsh 2y ago Card,
3 c778675 Mardin 2y ago Button,
4 cba9caa Dawsh 2y ago CardContent,
5 cba9caa Dawsh 2y ago CardHeader,
6 cba9caa Dawsh 2y ago CardTitle,
7 cba9caa Dawsh 2y ago Table,
8 cba9caa Dawsh 2y ago TableBody,
9 d377c4c Dawsh 2y ago TableRowWithCell,
10 d377c4c Dawsh 2y ago DateTableRow,
11 5a19530 Mardin 2y ago Badge
12 cba9caa Dawsh 2y ago } from "@marzneshin/components";
13 5a19530 Mardin 2y ago import type { FC } from "react";
14 c778675 Mardin 2y ago import { UserStatusEnableButton } from "./user-status-enable-button";
15 6955aba Mrdn 2y ago import {
16 d377c4c Dawsh 2y ago type UserProp,
17 d377c4c Dawsh 2y ago UserEnabledPill,
18 d377c4c Dawsh 2y ago UserUsedTraffic,
19 d377c4c Dawsh 2y ago UserActivatedPill,
20 c778675 Mardin 2y ago useUserUsageResetCmd,
21 d377c4c Dawsh 2y ago UserDataLimitReachedPill,
22 3c21dbd Mardin 2y ago UserExpiredPill,
23 e6e6467 Dawsh 2y ago } from "@marzneshin/modules/users";
24 857e289 Mrdn 2y ago import { useTranslation } from "react-i18next";
25 c778675 Mardin 2y ago import { formatDistanceToNow } from "date-fns";
26 c778675 Mardin 2y ago import { format } from '@chbphone55/pretty-bytes';
27 c778675 Mardin 2y ago import { TimerReset } from "lucide-react";
28 857e289 Mrdn 2y ago
29 d377c4c Dawsh 2y ago export const UserInfoTable: FC<UserProp> = ({ user: entity }) => {
30 857e289 Mrdn 2y ago const { t } = useTranslation();
31 5a19530 Mardin 2y ago const expireDate = entity.expire_date ? new Date(entity.expire_date) : null;
32 c778675 Mardin 2y ago const { mutate: resetUsage } = useUserUsageResetCmd();
33 c778675 Mardin 2y ago const lifetimeUsedTrafficByte = format(entity.lifetime_used_traffic);
34 cba9caa Dawsh 2y ago
35 857e289 Mrdn 2y ago return (
36 857e289 Mrdn 2y ago <Card>
37 6955aba Mrdn 2y ago <CardHeader className="flex flex-row justify-between items-center w-full">
38 45e0190 Mrdn 2y ago <CardTitle>{t("user_info")}</CardTitle>
39 c778675 Mardin 2y ago <div className="hstack justify-center items-center gap-2">
40 c778675 Mardin 2y ago <Button
41 c778675 Mardin 2y ago className="rounded-2xl"
42 c778675 Mardin 2y ago onClick={() => resetUsage(entity)}
43 c778675 Mardin 2y ago >
44 c778675 Mardin 2y ago <TimerReset className="mr-2" />
45 c778675 Mardin 2y ago <span>{t("page.users.reset_usage")}</span>
46 c778675 Mardin 2y ago </Button>
47 c778675 Mardin 2y ago <UserStatusEnableButton user={entity} />
48 c778675 Mardin 2y ago </div>
49 857e289 Mrdn 2y ago </CardHeader>
50 857e289 Mrdn 2y ago <CardContent>
51 857e289 Mrdn 2y ago <Table>
52 857e289 Mrdn 2y ago <TableBody>
53 45e0190 Mrdn 2y ago <TableRowWithCell label={t("username")} value={entity.username} />
54 3c21dbd Mardin 2y ago <TableRowWithCell
55 3c21dbd Mardin 2y ago label={t("activated")}
56 3c21dbd Mardin 2y ago value={<UserActivatedPill user={entity} />}
57 3c21dbd Mardin 2y ago />
58 45e0190 Mrdn 2y ago <TableRowWithCell
59 d377c4c Dawsh 2y ago label={t("enabled")}
60 d377c4c Dawsh 2y ago value={<UserEnabledPill user={entity} />}
61 45e0190 Mrdn 2y ago />
62 d377c4c Dawsh 2y ago <TableRowWithCell
63 3c21dbd Mardin 2y ago label={t("page.users.data_limit_reached")}
64 3c21dbd Mardin 2y ago value={<UserDataLimitReachedPill user={entity} />}
65 3c21dbd Mardin 2y ago />
66 3c21dbd Mardin 2y ago <TableRowWithCell
67 2a02d0e Mardin 2y ago label={t("expired")}
68 3c21dbd Mardin 2y ago value={<UserExpiredPill user={entity} />}
69 d377c4c Dawsh 2y ago />
70 5a19530 Mardin 2y ago {
71 5a19530 Mardin 2y ago {
72 5a19530 Mardin 2y ago fixed_date: (
73 45e0190 Mrdn 2y ago <DateTableRow
74 5a19530 Mardin 2y ago label={t("page.users.expire_date")}
75 5a19530 Mardin 2y ago date={expireDate}
76 5a19530 Mardin 2y ago />
77 5a19530 Mardin 2y ago ),
78 5a19530 Mardin 2y ago start_on_first_use: (
79 5a19530 Mardin 2y ago <>
80 5a19530 Mardin 2y ago <TableRowWithCell
81 5a19530 Mardin 2y ago label={t("page.users.usage_duration")}
82 5a19530 Mardin 2y ago value={
83 5a19530 Mardin 2y ago (entity.usage_duration ? entity.usage_duration : 0) /
84 5a19530 Mardin 2y ago 86400
85 5a19530 Mardin 2y ago }
86 5a19530 Mardin 2y ago />
87 5a19530 Mardin 2y ago <DateTableRow
88 5a19530 Mardin 2y ago label={t("page.users.activation_deadline")}
89 5a19530 Mardin 2y ago date={entity.activation_deadline}
90 5a19530 Mardin 2y ago />
91 5a19530 Mardin 2y ago </>
92 5a19530 Mardin 2y ago ),
93 5a19530 Mardin 2y ago never: (
94 5a19530 Mardin 2y ago <TableRowWithCell
95 5a19530 Mardin 2y ago label={t("page.users.expire_method")}
96 5a19530 Mardin 2y ago value={t("never")}
97 45e0190 Mrdn 2y ago />
98 5a19530 Mardin 2y ago ),
99 5a19530 Mardin 2y ago }[entity.expire_strategy]
100 5a19530 Mardin 2y ago }
101 d377c4c Dawsh 2y ago <TableRowWithCell
102 d377c4c Dawsh 2y ago label={t("page.users.used_traffic")}
103 d377c4c Dawsh 2y ago value={<UserUsedTraffic user={entity} />}
104 d377c4c Dawsh 2y ago />
105 c778675 Mardin 2y ago <DateTableRow
106 c778675 Mardin 2y ago label={t("page.users.traffic_reset_at")}
107 c778675 Mardin 2y ago date={entity.traffic_reset_at}
108 c778675 Mardin 2y ago withTime
109 c778675 Mardin 2y ago />
110 c778675 Mardin 2y ago <TableRowWithCell
111 c778675 Mardin 2y ago label={t("page.users.lifetime_used_traffic")}
112 c778675 Mardin 2y ago value={`${lifetimeUsedTrafficByte[0]} ${lifetimeUsedTrafficByte[1]}`}
113 c778675 Mardin 2y ago />
114 5a19530 Mardin 2y ago {entity.online_at ? (
115 c778675 Mardin 2y ago <TableRowWithCell
116 5a19530 Mardin 2y ago label={t("page.users.online_at")}
117 c778675 Mardin 2y ago value={formatDistanceToNow(new Date(entity.online_at + "Z")) + " ago"}
118 5a19530 Mardin 2y ago />
119 5a19530 Mardin 2y ago ) : (
120 5a19530 Mardin 2y ago <TableRowWithCell
121 5a19530 Mardin 2y ago label={t("page.users.online_at")}
122 5a19530 Mardin 2y ago value={<Badge>{t("page.users.no_use")}</Badge>}
123 5a19530 Mardin 2y ago />
124 5a19530 Mardin 2y ago )}
125 c778675 Mardin 2y ago <DateTableRow
126 c778675 Mardin 2y ago label={t("page.users.sub_updated_at")}
127 c778675 Mardin 2y ago date={entity.sub_updated_at}
128 c778675 Mardin 2y ago withTime
129 c778675 Mardin 2y ago />
130 c778675 Mardin 2y ago <TableRowWithCell
131 c778675 Mardin 2y ago label={t("page.users.sub_last_user_agent")}
132 c778675 Mardin 2y ago value={entity.sub_last_user_agent}
133 c778675 Mardin 2y ago />
134 45e0190 Mrdn 2y ago <DateTableRow
135 5a19530 Mardin 2y ago label={t("page.users.created_at")}
136 5a19530 Mardin 2y ago date={entity.created_at}
137 c778675 Mardin 2y ago withTime
138 45e0190 Mrdn 2y ago />
139 45e0190 Mrdn 2y ago <TableRowWithCell label={t("note")} value={entity.note} />
140 857e289 Mrdn 2y ago </TableBody>
141 857e289 Mrdn 2y ago </Table>
142 857e289 Mrdn 2y ago </CardContent>
143 857e289 Mrdn 2y ago </Card>
144 857e289 Mrdn 2y ago );
145 857e289 Mrdn 2y ago };