diff --git a/api/src/middlewares/TestClient.ts b/api/src/middlewares/TestClient.ts
index 75fdf650..73e7b9c2 100644
--- a/api/src/middlewares/TestClient.ts
+++ b/api/src/middlewares/TestClient.ts
@@ -22,7 +22,7 @@ export default function TestClient(app: Application) {
html = html.replace(/GATEWAY_ENDPOINT: .+/, `GATEWAY_ENDPOINT: \`${GATEWAY_ENDPOINT}\`,`);
}
- app.use("/assets", express.static(path.join(__dirname, "..", "assets")));
+ app.use("/assets", express.static(path.join(__dirname, "..", "..", "assets")));
app.get("/assets/:file", async (req: Request, res: Response) => {
delete req.headers.host;
diff --git a/api/src/routes/channels/#channel_id/invites.ts b/api/src/routes/channels/#channel_id/invites.ts
index fcc8a1ad..fe22d3bc 100644
--- a/api/src/routes/channels/#channel_id/invites.ts
+++ b/api/src/routes/channels/#channel_id/invites.ts
@@ -1,12 +1,9 @@
import { Router, Request, Response } from "express";
import { HTTPError } from "lambert-server";
-
import { check } from "../../../util/instanceOf";
import { random } from "../../../util/RandomInviteID";
-
import { InviteCreateSchema } from "../../../schema/Invite";
-
-import { getPermission, Channel, Invite, InviteCreateEvent, emitEvent, User, Guild } from "@fosscord/util";
+import { getPermission, Channel, Invite, InviteCreateEvent, emitEvent, User, Guild, PublicInviteRelation } from "@fosscord/util";
import { isTextChannel } from "./messages";
const router: Router = Router();
@@ -74,7 +71,7 @@ router.get("/", async (req: Request, res: Response) => {
const permission = await getPermission(user_id, guild_id);
permission.hasThrow("MANAGE_CHANNELS");
- const invites = await Invite.find({ guild_id });
+ const invites = await Invite.find({ where: { guild_id }, relations: PublicInviteRelation });
res.status(200).send(invites);
});
diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts
index 86de6de8..1a3150cf 100644
--- a/api/src/routes/channels/#channel_id/messages/index.ts
+++ b/api/src/routes/channels/#channel_id/messages/index.ts
@@ -15,13 +15,13 @@ export default router;
export function isTextChannel(type: ChannelType): boolean {
switch (type) {
+ case ChannelType.GUILD_STORE:
case ChannelType.GUILD_VOICE:
case ChannelType.GUILD_CATEGORY:
throw new HTTPError("not a text channel", 400);
case ChannelType.DM:
case ChannelType.GROUP_DM:
case ChannelType.GUILD_NEWS:
- case ChannelType.GUILD_STORE:
case ChannelType.GUILD_TEXT:
return true;
}
@@ -48,8 +48,7 @@ router.get("/", async (req: Request, res: Response) => {
if (!limit) limit = 50;
var halfLimit = Math.floor(limit / 2);
- // @ts-ignore
- const permissions = await getPermission(req.user_id, channel.guild_id, channel_id, { channel });
+ const permissions = await getPermission(req.user_id, channel.guild_id, channel_id);
permissions.hasThrow("VIEW_CHANNEL");
if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json([]);
diff --git a/api/src/routes/guilds/#guild_id/invites.ts b/api/src/routes/guilds/#guild_id/invites.ts
index 1843b689..39a934ee 100644
--- a/api/src/routes/guilds/#guild_id/invites.ts
+++ b/api/src/routes/guilds/#guild_id/invites.ts
@@ -1,4 +1,4 @@
-import { getPermission, Invite } from "@fosscord/util";
+import { getPermission, Invite, PublicInviteRelation } from "@fosscord/util";
import { Request, Response, Router } from "express";
const router = Router();
@@ -9,7 +9,7 @@ router.get("/", async (req: Request, res: Response) => {
const permissions = await getPermission(req.user_id, guild_id);
permissions.hasThrow("MANAGE_GUILD");
- const invites = await Invite.find({ guild_id });
+ const invites = await Invite.find({ where: { guild_id }, relations: PublicInviteRelation });
return res.json(invites);
});
diff --git a/api/src/routes/guilds/#guild_id/members/#member_id/index.ts b/api/src/routes/guilds/#guild_id/members/#member_id/index.ts
index 7e79caad..0d62e555 100644
--- a/api/src/routes/guilds/#guild_id/members/#member_id/index.ts
+++ b/api/src/routes/guilds/#guild_id/members/#member_id/index.ts
@@ -38,14 +38,13 @@ router.patch("/", check(MemberChangeSchema), async (req: Request, res: Response)
member.roles = body.roles.map((x) => new Role({ id: x })); // foreign key constraint will fail if role doesn't exist
}
- Promise.all([
- member.save(),
- emitEvent({
- event: "GUILD_MEMBER_UPDATE",
- guild_id,
- data: { ...member, roles: member.roles.map((x) => x.id) }
- } as GuildMemberUpdateEvent)
- ]);
+ await member.save();
+ // do not use promise.all as we have to first write to db before emitting the event
+ await emitEvent({
+ event: "GUILD_MEMBER_UPDATE",
+ guild_id,
+ data: { ...member, roles: member.roles.map((x) => x.id) }
+ } as GuildMemberUpdateEvent);
res.json(member);
});
diff --git a/api/src/routes/invites/index.ts b/api/src/routes/invites/index.ts
index 23fa3aec..b8c24c1f 100644
--- a/api/src/routes/invites/index.ts
+++ b/api/src/routes/invites/index.ts
@@ -1,12 +1,12 @@
import { Router, Request, Response } from "express";
-import { getPermission, Guild, Invite, Member } from "@fosscord/util";
+import { getPermission, Guild, Invite, Member, PublicInviteRelation } from "@fosscord/util";
import { HTTPError } from "lambert-server";
const router: Router = Router();
router.get("/:code", async (req: Request, res: Response) => {
const { code } = req.params;
- const invite = await Invite.findOneOrFail({ code });
+ const invite = await Invite.findOneOrFail({ where: { code }, relations: PublicInviteRelation });
res.status(200).send(invite);
});
|