1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-22 02:12:40 +01:00

Fix new roles having duplicate positions

This commit is contained in:
Madeline 2022-12-30 18:07:56 +11:00
parent 6b8c0d6e85
commit a1c07173bb
2 changed files with 13 additions and 6 deletions

View File

@ -63,13 +63,12 @@ router.patch(
);
else body.icon = undefined;
const role = Role.create({
const role = await Role.findOneOrFail({ where: { id: role_id, guild: { id: guild_id } } });
role.assign({
...body,
id: role_id,
guild_id,
permissions: String(
req.permission!.bitfield & BigInt(body.permissions || "0"),
),
req.permission!.bitfield & BigInt(body.permissions || "0")
)
});
await Promise.all([

View File

@ -10,8 +10,10 @@ import {
DiscordApiErrors,
RoleModifySchema,
RolePositionUpdateSchema,
Snowflake,
} from "@fosscord/util";
import { route } from "@fosscord/api";
import { Not } from "typeorm";
const router: Router = Router();
@ -40,7 +42,7 @@ router.post(
const role = Role.create({
// values before ...body are default and can be overriden
position: 0,
position: 1,
hoist: false,
color: 0,
mentionable: false,
@ -53,10 +55,16 @@ router.post(
tags: undefined,
icon: undefined,
unicode_emoji: undefined,
id: Snowflake.generate(),
});
await Promise.all([
role.save(),
// Move all existing roles up one position, to accommodate the new role
Role.createQueryBuilder('roles')
.where({ guild: { id: guild_id }, name: Not("@everyone"), id: Not(role.id) })
.update({ position: () => 'position + 1' })
.execute(),
emitEvent({
event: "GUILD_ROLE_CREATE",
guild_id,