diff --git a/components/inspector/ServerActions.tsx b/components/inspector/ServerActions.tsx
index 4a24e2c..acb8b2f 100644
--- a/components/inspector/ServerActions.tsx
+++ b/components/inspector/ServerActions.tsx
@@ -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",
});
}
diff --git a/components/inspector/UserActions.tsx b/components/inspector/UserActions.tsx
index d8a1abf..a3778b9 100644
--- a/components/inspector/UserActions.tsx
+++ b/components/inspector/UserActions.tsx
@@ -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 (
{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,29 +97,49 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
-
- Are you sure you want to suspend this user?
+ Are you sure you want to{" "}
+ {userDraft.flags === 1 ? "unsuspend" : "suspend"} this user?
Cancel
- suspendUser(user._id)
- .then(() => toast({ title: "Suspended user" }))
- .catch((err) =>
- toast({
- title: "Failed to suspend user!",
- description: String(err),
- variant: "destructive",
- })
- )
+ 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!",
+ description: String(err),
+ variant: "destructive",
+ })
+ )
}
>
Suspend
@@ -126,8 +150,12 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
-
- Ban
+
+ {userDraft.flags === 4 ? "Banned" : "Ban"}
@@ -135,13 +163,19 @@ export function UserActions({ user, bot }: { user: User; bot?: Bot }) {
Are you sure you want to ban this user?
+
+ This action is irreversible!
+
Cancel
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 }) {
-
+
{
throw "Cancel immediate propagation.";
}}
+ disabled={userInaccessible}
>
Send Alert