Catch Blocks #158

Merged
PxlLoewe merged 2 commits from staging into release 2026-01-31 23:19:22 +00:00
5 changed files with 106 additions and 78 deletions

View File

@@ -142,6 +142,7 @@ const removeConnectedAircrafts = async () => {
}); });
}; };
const removePermissionsForBannedUsers = async () => { const removePermissionsForBannedUsers = async () => {
try {
const removePermissionsPenaltys = await prisma.penalty.findMany({ const removePermissionsPenaltys = await prisma.penalty.findMany({
where: { where: {
removePermissionApplied: false, removePermissionApplied: false,
@@ -210,6 +211,9 @@ const removePermissionsForBannedUsers = async () => {
data: { addPermissionApplied: true }, data: { addPermissionApplied: true },
}); });
} }
} catch (error) {
console.error("Error removing permissions for banned users:", error);
}
}; };
removePermissionsForBannedUsers(); removePermissionsForBannedUsers();

View File

@@ -66,6 +66,8 @@ export const setUserStandardNamePermissions = async ({
const publicUser = getPublicUser(user); const publicUser = getPublicUser(user);
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) throw new Error("Member not found");
await member.setNickname(`${publicUser.fullName} - ${user.publicId}`); await member.setNickname(`${publicUser.fullName} - ${user.publicId}`);
const isPilot = user.permissions.includes("PILOT"); const isPilot = user.permissions.includes("PILOT");
const isDispatcher = user.permissions.includes("DISPO"); const isDispatcher = user.permissions.includes("DISPO");
@@ -79,10 +81,14 @@ export const setUserStandardNamePermissions = async ({
}; };
router.post("/set-standard-name", async (req, res) => { router.post("/set-standard-name", async (req, res) => {
try {
const { memberId, userId } = req.body; const { memberId, userId } = req.body;
await setUserStandardNamePermissions({ memberId, userId }); await setUserStandardNamePermissions({ memberId, userId });
res.status(200).json({ message: "Standard name and permissions set" }); res.status(200).json({ message: "Standard name and permissions set" });
} catch (error) {
res.status(500).json({ error: (error as unknown as Error).message });
}
}); });
export default router; export default router;

View File

@@ -20,12 +20,12 @@ export const getMember = async (memberId: string) => {
try { try {
let member = guild.members.cache.get(memberId); let member = guild.members.cache.get(memberId);
if (!member) { if (!member) {
member = await guild.members.fetch(memberId); member = await guild.members.fetch(memberId).catch((e) => undefined);
} }
return member; return member;
} catch (error) { } catch (error) {
console.error("Error fetching member:", error); console.error("Error fetching member:", error);
throw new Error("Member not found"); return null;
} }
}; };
@@ -37,6 +37,10 @@ router.post("/rename", async (req: Request, res: Response) => {
} }
try { try {
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) {
res.status(404).json({ error: "Member not found" });
return;
}
await member.setNickname(newName); await member.setNickname(newName);
console.log(`Member ${member.id} renamed to ${newName}`); console.log(`Member ${member.id} renamed to ${newName}`);
res.status(200).json({ message: "Member renamed successfully" }); res.status(200).json({ message: "Member renamed successfully" });
@@ -52,6 +56,9 @@ export const changeMemberRoles = async (
action: "add" | "remove", action: "add" | "remove",
) => { ) => {
const member = await getMember(memberId); const member = await getMember(memberId);
if (!member) {
throw new Error("Member not found");
}
const currentRoleIds = member.roles.cache.map((role) => role.id); const currentRoleIds = member.roles.cache.map((role) => role.id);
const filteredRoleIds = const filteredRoleIds =

View File

@@ -54,7 +54,7 @@ import {
} from "lucide-react"; } from "lucide-react";
import Link from "next/link"; import Link from "next/link";
import { ColumnDef } from "@tanstack/react-table"; import { ColumnDef } from "@tanstack/react-table";
import { Error } from "_components/Error"; import { Error as ErrorComponent } from "_components/Error";
import { useSession } from "next-auth/react"; import { useSession } from "next-auth/react";
import { setStandardName } from "../../../../../../helper/discord"; import { setStandardName } from "../../../../../../helper/discord";
import { penaltyColumns } from "(app)/admin/penalty/columns"; import { penaltyColumns } from "(app)/admin/penalty/columns";
@@ -73,7 +73,7 @@ export const ProfileForm: React.FC<ProfileFormProps> = ({ user }: ProfileFormPro
defaultValues: user, defaultValues: user,
resolver: zodResolver(UserOptionalDefaultsSchema), resolver: zodResolver(UserOptionalDefaultsSchema),
}); });
if (!user) return <Error title="User not found" statusCode={404} />; if (!user) return <ErrorComponent title="User not found" statusCode={404} />;
return ( return (
<form <form
className="card-body" className="card-body"
@@ -663,16 +663,25 @@ export const AdminForm = ({
> >
<Button <Button
onClick={async () => { onClick={async () => {
await setStandardName({ try {
const response = await setStandardName({
memberId: discordAccount.discordId, memberId: discordAccount.discordId,
userId: user.id, userId: user.id,
}); });
if (response?.error) {
throw new Error(response.error);
}
toast.success("Standard Name wurde gesetzt!", { toast.success("Standard Name wurde gesetzt!", {
style: { style: {
background: "var(--color-base-100)", background: "var(--color-base-100)",
color: "var(--color-base-content)", color: "var(--color-base-content)",
}, },
}); });
} catch (error) {
toast.error(
"Fehler beim setzen des Standard Namens: " + (error as Error).message,
);
}
}} }}
className="btn-sm btn-outline btn-info w-full" className="btn-sm btn-outline btn-info w-full"
> >

View File

@@ -1,5 +1,5 @@
"use server"; "use server";
import axios from "axios"; import axios, { AxiosError } from "axios";
const discordAxiosClient = axios.create({ const discordAxiosClient = axios.create({
baseURL: process.env.CORE_SERVER_URL || "http://localhost:3005", baseURL: process.env.CORE_SERVER_URL || "http://localhost:3005",
@@ -55,12 +55,14 @@ export const setStandardName = async ({
memberId: string; memberId: string;
userId: string; userId: string;
}) => { }) => {
discordAxiosClient try {
.post("/helper/set-standard-name", { await discordAxiosClient.post("/helper/set-standard-name", {
memberId, memberId,
userId, userId,
})
.catch((error) => {
console.error("Error removing roles from member:", error);
}); });
} catch (error) {
return {
error: (error as AxiosError<{ error: string }>).response?.data.error || "Unknown error",
};
}
}; };