forked from administration/panel
feat: unsuspend users
parent
aca5010b41
commit
251cb9b7f6
|
@ -40,7 +40,7 @@ export function ServerActions({ server }: { server: Server }) {
|
|||
} catch (err) {
|
||||
toast({
|
||||
title: "Failed to remove server from Discover",
|
||||
description: "" + err,
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
});
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ export function ServerActions({ server }: { server: Server }) {
|
|||
} catch (err) {
|
||||
toast({
|
||||
title: "Failed to add server to Discover",
|
||||
description: "" + err,
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
});
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ export function ServerActions({ server }: { server: Server }) {
|
|||
} catch (err) {
|
||||
toast({
|
||||
title: "Failed to update server flags",
|
||||
description: "" + err,
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
});
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import {
|
|||
banUser,
|
||||
sendAlert,
|
||||
suspendUser,
|
||||
unsuspendUser,
|
||||
updateBotDiscoverability,
|
||||
} from "@/lib/actions";
|
||||
import { useRef, useState } from "react";
|
||||
|
@ -34,8 +35,11 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
const alertMessage = useRef("");
|
||||
const { toast } = useToast();
|
||||
|
||||
const [userDraft, setUserDraft] = useState(user);
|
||||
const [botDraft, setBotDraft] = useState(bot);
|
||||
|
||||
const userInaccessible = userDraft.flags === 4 || userDraft.flags === 2;
|
||||
|
||||
return (
|
||||
<div className="flex gap-2">
|
||||
{bot ? (
|
||||
|
@ -52,7 +56,7 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
} catch (err) {
|
||||
toast({
|
||||
title: "Failed to remove bot from Discover",
|
||||
description: "" + err,
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
});
|
||||
}
|
||||
|
@ -73,7 +77,7 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
} catch (err) {
|
||||
toast({
|
||||
title: "Failed to add bot to Discover",
|
||||
description: "" + err,
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
});
|
||||
}
|
||||
|
@ -93,22 +97,42 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
|
||||
<AlertDialog>
|
||||
<AlertDialogTrigger asChild>
|
||||
<Button className="flex-1 bg-orange-400 hover:bg-orange-300">
|
||||
Suspend
|
||||
<Button
|
||||
className="flex-1 bg-orange-400 hover:bg-orange-300"
|
||||
disabled={userInaccessible}
|
||||
>
|
||||
{userDraft.flags === 1 ? "Unsuspend" : "Suspend"}
|
||||
</Button>
|
||||
</AlertDialogTrigger>
|
||||
<AlertDialogContent>
|
||||
<AlertDialogHeader>
|
||||
<AlertDialogTitle>
|
||||
Are you sure you want to suspend this user?
|
||||
Are you sure you want to{" "}
|
||||
{userDraft.flags === 1 ? "unsuspend" : "suspend"} this user?
|
||||
</AlertDialogTitle>
|
||||
</AlertDialogHeader>
|
||||
<AlertDialogFooter>
|
||||
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
||||
<AlertDialogAction
|
||||
onClick={() =>
|
||||
suspendUser(user._id)
|
||||
.then(() => toast({ title: "Suspended user" }))
|
||||
userDraft.flags === 1
|
||||
? unsuspendUser(user._id)
|
||||
.then(() => {
|
||||
setUserDraft((user) => ({ ...user, flags: 0 }));
|
||||
toast({ title: "Unsuspended user" });
|
||||
})
|
||||
.catch((err) =>
|
||||
toast({
|
||||
title: "Failed to unsuspend user!",
|
||||
description: String(err),
|
||||
variant: "destructive",
|
||||
})
|
||||
)
|
||||
: suspendUser(user._id)
|
||||
.then(() => {
|
||||
setUserDraft((user) => ({ ...user, flags: 1 }));
|
||||
toast({ title: "Suspended user" });
|
||||
})
|
||||
.catch((err) =>
|
||||
toast({
|
||||
title: "Failed to suspend user!",
|
||||
|
@ -126,8 +150,12 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
|
||||
<AlertDialog>
|
||||
<AlertDialogTrigger asChild>
|
||||
<Button className="flex-1" variant="destructive">
|
||||
Ban
|
||||
<Button
|
||||
className="flex-1"
|
||||
variant="destructive"
|
||||
disabled={userInaccessible}
|
||||
>
|
||||
{userDraft.flags === 4 ? "Banned" : "Ban"}
|
||||
</Button>
|
||||
</AlertDialogTrigger>
|
||||
<AlertDialogContent>
|
||||
|
@ -135,13 +163,19 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
<AlertDialogTitle>
|
||||
Are you sure you want to ban this user?
|
||||
</AlertDialogTitle>
|
||||
<AlertDialogDescription className="text-red-700">
|
||||
This action is irreversible!
|
||||
</AlertDialogDescription>
|
||||
</AlertDialogHeader>
|
||||
<AlertDialogFooter>
|
||||
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
||||
<AlertDialogAction
|
||||
onClick={() =>
|
||||
banUser(user._id)
|
||||
.then(() => toast({ title: "Banned user" }))
|
||||
.then(() => {
|
||||
setUserDraft((user) => ({ ...user, flags: 4 }));
|
||||
toast({ title: "Banned user" });
|
||||
})
|
||||
.catch((err) =>
|
||||
toast({
|
||||
title: "Failed to ban user!",
|
||||
|
@ -165,11 +199,12 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
|
|||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<AlertDialog>
|
||||
<AlertDialogTrigger className="w-full">
|
||||
<AlertDialogTrigger asChild>
|
||||
<DropdownMenuItem
|
||||
onClick={() => {
|
||||
throw "Cancel immediate propagation.";
|
||||
}}
|
||||
disabled={userInaccessible}
|
||||
>
|
||||
Send Alert
|
||||
</DropdownMenuItem>
|
||||
|
|
Loading…
Reference in New Issue