gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/settings/user-info/table.tsx · master
Source
1 cba9caa Dawsh 2y ago import {
2 ec61fc5 Dawsh 1y ago Badge,
3 c778675 Mardin 2y ago Button,
4 ec61fc5 Dawsh 1y ago Card,
5 cba9caa Dawsh 2y ago CardContent,
6 cba9caa Dawsh 2y ago CardHeader,
7 cba9caa Dawsh 2y ago CardTitle,
8 ec61fc5 Dawsh 1y ago DateTableRow,
9 cba9caa Dawsh 2y ago Table,
10 cba9caa Dawsh 2y ago TableBody,
11 d377c4c Dawsh 2y ago TableRowWithCell,
12 7389ad0 Mardin 2y ago } from "@marzneshin/common/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 UserActivatedPill,
17 d377c4c Dawsh 2y ago UserDataLimitReachedPill,
18 ec61fc5 Dawsh 1y ago UserEnabledPill,
19 3c21dbd Mardin 2y ago UserExpiredPill,
20 ec61fc5 Dawsh 1y ago type UserProp,
21 ec61fc5 Dawsh 1y ago UserUsedTraffic,
22 ec61fc5 Dawsh 1y ago useUserUsageResetCmd,
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 ec61fc5 Dawsh 1y 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 c778675 Mardin 2y ago const { mutate: resetUsage } = useUserUsageResetCmd();
32 c778675 Mardin 2y ago const lifetimeUsedTrafficByte = format(entity.lifetime_used_traffic);
33 cba9caa Dawsh 2y ago
34 857e289 Mrdn 2y ago return (
35 857e289 Mrdn 2y ago <Card>
36 6955aba Mrdn 2y ago <CardHeader className="flex flex-row justify-between items-center w-full">
37 45e0190 Mrdn 2y ago <CardTitle>{t("user_info")}</CardTitle>
38 c778675 Mardin 2y ago <div className="hstack justify-center items-center gap-2">
39 c778675 Mardin 2y ago <Button
40 c778675 Mardin 2y ago className="rounded-2xl"
41 c778675 Mardin 2y ago onClick={() => resetUsage(entity)}
42 c778675 Mardin 2y ago >
43 c778675 Mardin 2y ago <TimerReset className="mr-2" />
44 c778675 Mardin 2y ago <span>{t("page.users.reset_usage")}</span>
45 c778675 Mardin 2y ago </Button>
46 c778675 Mardin 2y ago <UserStatusEnableButton user={entity} />
47 c778675 Mardin 2y ago </div>
48 857e289 Mrdn 2y ago </CardHeader>
49 857e289 Mrdn 2y ago <CardContent>
50 857e289 Mrdn 2y ago <Table>
51 857e289 Mrdn 2y ago <TableBody>
52 ec61fc5 Dawsh 1y ago <TableRowWithCell
53 ec61fc5 Dawsh 1y ago label={t("username")}
54 ec61fc5 Dawsh 1y ago value={entity.username}
55 ec61fc5 Dawsh 1y ago />
56 3c21dbd Mardin 2y ago <TableRowWithCell
57 3c21dbd Mardin 2y ago label={t("activated")}
58 3c21dbd Mardin 2y ago value={<UserActivatedPill user={entity} />}
59 3c21dbd Mardin 2y ago />
60 45e0190 Mrdn 2y ago <TableRowWithCell
61 d377c4c Dawsh 2y ago label={t("enabled")}
62 d377c4c Dawsh 2y ago value={<UserEnabledPill user={entity} />}
63 45e0190 Mrdn 2y ago />
64 d377c4c Dawsh 2y ago <TableRowWithCell
65 3c21dbd Mardin 2y ago label={t("page.users.data_limit_reached")}
66 3c21dbd Mardin 2y ago value={<UserDataLimitReachedPill user={entity} />}
67 3c21dbd Mardin 2y ago />
68 3c21dbd Mardin 2y ago <TableRowWithCell
69 2a02d0e Mardin 2y ago label={t("expired")}
70 3c21dbd Mardin 2y ago value={<UserExpiredPill user={entity} />}
71 d377c4c Dawsh 2y ago />
72 5a19530 Mardin 2y ago {
73 5a19530 Mardin 2y ago {
74 5a19530 Mardin 2y ago fixed_date: (
75 45e0190 Mrdn 2y ago <DateTableRow
76 5a19530 Mardin 2y ago label={t("page.users.expire_date")}
77 152b1c8 Dawsh 1y ago date={entity.expire_date}
78 5a19530 Mardin 2y ago />
79 5a19530 Mardin 2y ago ),
80 5a19530 Mardin 2y ago start_on_first_use: (
81 5a19530 Mardin 2y ago <>
82 5a19530 Mardin 2y ago <TableRowWithCell
83 ec61fc5 Dawsh 1y ago label={t(
84 ec61fc5 Dawsh 1y ago "page.users.usage_duration",
85 ec61fc5 Dawsh 1y ago )}
86 5a19530 Mardin 2y ago value={
87 ec61fc5 Dawsh 1y ago (entity.usage_duration
88 ec61fc5 Dawsh 1y ago ? entity.usage_duration
89 ec61fc5 Dawsh 1y ago : 0) / 86400
90 5a19530 Mardin 2y ago }
91 5a19530 Mardin 2y ago />
92 5a19530 Mardin 2y ago <DateTableRow
93 ec61fc5 Dawsh 1y ago label={t(
94 ec61fc5 Dawsh 1y ago "page.users.activation_deadline",
95 ec61fc5 Dawsh 1y ago )}
96 5a19530 Mardin 2y ago date={entity.activation_deadline}
97 5a19530 Mardin 2y ago />
98 5a19530 Mardin 2y ago </>
99 5a19530 Mardin 2y ago ),
100 5a19530 Mardin 2y ago never: (
101 5a19530 Mardin 2y ago <TableRowWithCell
102 5a19530 Mardin 2y ago label={t("page.users.expire_method")}
103 ec61fc5 Dawsh 1y ago value={
104 ec61fc5 Dawsh 1y ago <Badge>
105 ec61fc5 Dawsh 1y ago {t("page.users.never")}
106 ec61fc5 Dawsh 1y ago </Badge>
107 ec61fc5 Dawsh 1y ago }
108 45e0190 Mrdn 2y ago />
109 5a19530 Mardin 2y ago ),
110 5a19530 Mardin 2y ago }[entity.expire_strategy]
111 5a19530 Mardin 2y ago }
112 d377c4c Dawsh 2y ago <TableRowWithCell
113 d377c4c Dawsh 2y ago label={t("page.users.used_traffic")}
114 d377c4c Dawsh 2y ago value={<UserUsedTraffic user={entity} />}
115 d377c4c Dawsh 2y ago />
116 ec61fc5 Dawsh 1y ago {entity.traffic_reset_at ? (
117 ec61fc5 Dawsh 1y ago <DateTableRow
118 ec61fc5 Dawsh 1y ago label={t("page.users.traffic_reset_at")}
119 152b1c8 Dawsh 1y ago date={entity.traffic_reset_at}
120 ec61fc5 Dawsh 1y ago withTime
121 ec61fc5 Dawsh 1y ago />
122 ec61fc5 Dawsh 1y ago ) : (
123 ec61fc5 Dawsh 1y ago <TableRowWithCell
124 ec61fc5 Dawsh 1y ago label={t("page.users.traffic_reset_at")}
125 ec61fc5 Dawsh 1y ago value={<Badge>{t("page.users.never")}</Badge>}
126 ec61fc5 Dawsh 1y ago />
127 ec61fc5 Dawsh 1y ago )}
128 c778675 Mardin 2y ago <TableRowWithCell
129 c778675 Mardin 2y ago label={t("page.users.lifetime_used_traffic")}
130 c778675 Mardin 2y ago value={`${lifetimeUsedTrafficByte[0]} ${lifetimeUsedTrafficByte[1]}`}
131 c778675 Mardin 2y ago />
132 5a19530 Mardin 2y ago {entity.online_at ? (
133 c778675 Mardin 2y ago <TableRowWithCell
134 5a19530 Mardin 2y ago label={t("page.users.online_at")}
135 ec61fc5 Dawsh 1y ago value={
136 ec61fc5 Dawsh 1y ago formatDistanceToNow(
137 ec61fc5 Dawsh 1y ago new Date(entity.online_at + "Z"),
138 ec61fc5 Dawsh 1y ago ) + " ago"
139 ec61fc5 Dawsh 1y ago }
140 5a19530 Mardin 2y ago />
141 5a19530 Mardin 2y ago ) : (
142 5a19530 Mardin 2y ago <TableRowWithCell
143 5a19530 Mardin 2y ago label={t("page.users.online_at")}
144 5a19530 Mardin 2y ago value={<Badge>{t("page.users.no_use")}</Badge>}
145 5a19530 Mardin 2y ago />
146 5a19530 Mardin 2y ago )}
147 ec61fc5 Dawsh 1y ago {entity.sub_updated_at ? (
148 ec61fc5 Dawsh 1y ago <DateTableRow
149 ec61fc5 Dawsh 1y ago label={t("page.users.sub_updated_at")}
150 152b1c8 Dawsh 1y ago date={entity.sub_updated_at}
151 ec61fc5 Dawsh 1y ago withTime
152 ec61fc5 Dawsh 1y ago />
153 ec61fc5 Dawsh 1y ago ) : (
154 ec61fc5 Dawsh 1y ago <TableRowWithCell
155 ec61fc5 Dawsh 1y ago label={t("page.users.sub_updated_at")}
156 ec61fc5 Dawsh 1y ago value={<Badge>{t("page.users.never")}</Badge>}
157 ec61fc5 Dawsh 1y ago />
158 ec61fc5 Dawsh 1y ago )}
159 c778675 Mardin 2y ago <TableRowWithCell
160 c778675 Mardin 2y ago label={t("page.users.sub_last_user_agent")}
161 ec61fc5 Dawsh 1y ago value={
162 ec61fc5 Dawsh 1y ago entity.sub_last_user_agent ? (
163 ec61fc5 Dawsh 1y ago entity.sub_last_user_agent
164 ec61fc5 Dawsh 1y ago ) : (
165 ec61fc5 Dawsh 1y ago <Badge>{t("page.users.no_use")}</Badge>
166 ec61fc5 Dawsh 1y ago )
167 ec61fc5 Dawsh 1y ago }
168 c778675 Mardin 2y ago />
169 45e0190 Mrdn 2y ago <DateTableRow
170 5a19530 Mardin 2y ago label={t("page.users.created_at")}
171 5a19530 Mardin 2y ago date={entity.created_at}
172 c778675 Mardin 2y ago withTime
173 45e0190 Mrdn 2y ago />
174 ec61fc5 Dawsh 1y ago <TableRowWithCell
175 ec61fc5 Dawsh 1y ago label={t("note")}
176 ec61fc5 Dawsh 1y ago value={entity.note}
177 ec61fc5 Dawsh 1y ago />
178 857e289 Mrdn 2y ago </TableBody>
179 857e289 Mrdn 2y ago </Table>
180 857e289 Mrdn 2y ago </CardContent>
181 857e289 Mrdn 2y ago </Card>
182 857e289 Mrdn 2y ago );
183 857e289 Mrdn 2y ago };