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 }) { - @@ -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