gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/dialogs/settings/index.tsx · v0.4.1
Source
1 857e289 Mrdn 2y ago import {
2 fb9bc33 Mardin 2y ago Button,
3 857e289 Mrdn 2y ago ScrollArea,
4 857e289 Mrdn 2y ago Tabs,
5 857e289 Mrdn 2y ago TabsContent,
6 857e289 Mrdn 2y ago TabsList,
7 857e289 Mrdn 2y ago TabsTrigger,
8 d377c4c Dawsh 2y ago Awaiting,
9 4708fcb Dawsh 2y ago SettingsInfoSkeleton,
10 4708fcb Dawsh 2y ago SettingsDialogProps,
11 4708fcb Dawsh 2y ago SettingsDialog,
12 45e0190 Mrdn 2y ago } from "@marzneshin/components";
13 fb9bc33 Mardin 2y ago import {
14 d377c4c Dawsh 2y ago UserServicesTable,
15 fb9bc33 Mardin 2y ago useUserUsageResetCmd,
16 fb9bc33 Mardin 2y ago type UserType
17 fb9bc33 Mardin 2y ago } from "@marzneshin/features/users";
18 03b3dbc Mardin 2y ago import { type FC, useEffect } from "react";
19 45e0190 Mrdn 2y ago import { useTranslation } from "react-i18next";
20 d377c4c Dawsh 2y ago import {
21 d377c4c Dawsh 2y ago UserStatusEnableButton,
22 d377c4c Dawsh 2y ago SubscriptionActions,
23 d377c4c Dawsh 2y ago QRCodeSection,
24 d377c4c Dawsh 2y ago UserInfoTable
25 d377c4c Dawsh 2y ago } from "./user-info";
26 857e289 Mrdn 2y ago
27 4708fcb Dawsh 2y ago interface UsersSettingsDialogProps extends SettingsDialogProps {
28 d377c4c Dawsh 2y ago entity: UserType | null;
29 03b3dbc Mardin 2y ago onClose: () => void;
30 d377c4c Dawsh 2y ago isPending: boolean;
31 857e289 Mrdn 2y ago }
32 857e289 Mrdn 2y ago
33 45e0190 Mrdn 2y ago export const UsersSettingsDialog: FC<UsersSettingsDialogProps> = ({
34 45e0190 Mrdn 2y ago onOpenChange,
35 45e0190 Mrdn 2y ago open,
36 45e0190 Mrdn 2y ago entity,
37 03b3dbc Mardin 2y ago onClose,
38 d377c4c Dawsh 2y ago isPending,
39 45e0190 Mrdn 2y ago }) => {
40 857e289 Mrdn 2y ago const { t } = useTranslation();
41 fb9bc33 Mardin 2y ago const { mutate: resetUsage } = useUserUsageResetCmd();
42 857e289 Mrdn 2y ago
43 03b3dbc Mardin 2y ago useEffect(() => {
44 03b3dbc Mardin 2y ago if (!open) onClose();
45 03b3dbc Mardin 2y ago }, [open, onClose]);
46 03b3dbc Mardin 2y ago
47 03b3dbc Mardin 2y ago return (
48 4708fcb Dawsh 2y ago <SettingsDialog open={open} onOpenChange={onOpenChange}>
49 4708fcb Dawsh 2y ago <Awaiting
50 4708fcb Dawsh 2y ago Component={entity ? (
51 4708fcb Dawsh 2y ago <ScrollArea className="flex flex-col gap-4 h-full">
52 4708fcb Dawsh 2y ago <Tabs defaultValue="info" className="w-full h-full">
53 4708fcb Dawsh 2y ago <TabsList className="w-full bg-accent">
54 4708fcb Dawsh 2y ago <TabsTrigger className="w-full" value="info">
55 4708fcb Dawsh 2y ago {t("user_info")}
56 4708fcb Dawsh 2y ago </TabsTrigger>
57 4708fcb Dawsh 2y ago <TabsTrigger className="w-full" value="services">
58 4708fcb Dawsh 2y ago {t("services")}
59 4708fcb Dawsh 2y ago </TabsTrigger>
60 4708fcb Dawsh 2y ago <TabsTrigger className="w-full" value="subscription">
61 4708fcb Dawsh 2y ago {t("subscription")}
62 4708fcb Dawsh 2y ago </TabsTrigger>
63 4708fcb Dawsh 2y ago </TabsList>
64 4708fcb Dawsh 2y ago <TabsContent
65 4708fcb Dawsh 2y ago value="info"
66 4708fcb Dawsh 2y ago className="flex flex-col gap-2 w-full h-full"
67 4708fcb Dawsh 2y ago >
68 4708fcb Dawsh 2y ago <UserInfoTable user={entity} />
69 4708fcb Dawsh 2y ago <div className="hstack justify-center items-center gap-2">
70 4708fcb Dawsh 2y ago <Button className="w-1/2" onClick={() => resetUsage(entity)}>
71 4708fcb Dawsh 2y ago {t("page.users.reset_usage")}
72 4708fcb Dawsh 2y ago </Button>
73 4708fcb Dawsh 2y ago <UserStatusEnableButton user={entity} />
74 4708fcb Dawsh 2y ago </div>
75 4708fcb Dawsh 2y ago </TabsContent>
76 4708fcb Dawsh 2y ago <TabsContent value="services">
77 4708fcb Dawsh 2y ago <UserServicesTable user={entity} />
78 4708fcb Dawsh 2y ago </TabsContent>
79 4708fcb Dawsh 2y ago <TabsContent value="subscription">
80 4708fcb Dawsh 2y ago <QRCodeSection entity={entity} />
81 4708fcb Dawsh 2y ago <SubscriptionActions entity={entity} />
82 4708fcb Dawsh 2y ago </TabsContent>
83 4708fcb Dawsh 2y ago </Tabs>
84 4708fcb Dawsh 2y ago </ScrollArea>
85 4708fcb Dawsh 2y ago ) : (<div>Not Found</div>)}
86 4708fcb Dawsh 2y ago Skeleton={<SettingsInfoSkeleton />}
87 4708fcb Dawsh 2y ago isFetching={isPending}
88 4708fcb Dawsh 2y ago />
89 4708fcb Dawsh 2y ago </SettingsDialog>
90 03b3dbc Mardin 2y ago );
91 45e0190 Mrdn 2y ago };