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