Fix creating guilds
This commit is contained in:
parent
387722d017
commit
ac47e03d19
@ -16,14 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
Column,
|
||||
Entity,
|
||||
JoinColumn,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
RelationId,
|
||||
} from "typeorm";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
|
||||
import { Config, GuildWelcomeScreen, Snowflake, handleFile } from "..";
|
||||
import { Ban } from "./Ban";
|
||||
import { BaseClass } from "./BaseClass";
|
||||
@ -337,17 +330,13 @@ export class Guild extends BaseClass {
|
||||
welcome_channels: [],
|
||||
},
|
||||
channel_ordering: [],
|
||||
|
||||
afk_timeout: Config.get().defaults.guild.afkTimeout,
|
||||
default_message_notifications:
|
||||
Config.get().defaults.guild.defaultMessageNotifications,
|
||||
explicit_content_filter:
|
||||
Config.get().defaults.guild.explicitContentFilter,
|
||||
default_message_notifications: Config.get().defaults.guild.defaultMessageNotifications,
|
||||
explicit_content_filter: Config.get().defaults.guild.explicitContentFilter,
|
||||
features: Config.get().guild.defaultFeatures,
|
||||
max_members: Config.get().limits.guild.maxMembers,
|
||||
max_presences: Config.get().defaults.guild.maxPresences,
|
||||
max_video_channel_users:
|
||||
Config.get().defaults.guild.maxVideoChannelUsers,
|
||||
max_video_channel_users: Config.get().defaults.guild.maxVideoChannelUsers,
|
||||
region: Config.get().regions.default,
|
||||
}).save();
|
||||
|
||||
@ -357,12 +346,12 @@ export class Guild extends BaseClass {
|
||||
id: guild_id,
|
||||
guild_id: guild_id,
|
||||
color: 0,
|
||||
colors: { primary_color: 0 },
|
||||
hoist: false,
|
||||
managed: false,
|
||||
// NB: in Spacebar, every role will be non-managed, as we use user-groups instead of roles for managed groups
|
||||
mentionable: false,
|
||||
name: "@everyone",
|
||||
permissions: String("2251804225"),
|
||||
permissions: "2251804225",
|
||||
position: 0,
|
||||
icon: undefined,
|
||||
unicode_emoji: undefined,
|
||||
@ -379,9 +368,7 @@ export class Guild extends BaseClass {
|
||||
guild_id,
|
||||
id:
|
||||
// role.id === body.template_guild_id indicates that this is the @everyone role
|
||||
role.id === body.template_guild_id
|
||||
? guild_id
|
||||
: Snowflake.generate(),
|
||||
role.id === body.template_guild_id ? guild_id : Snowflake.generate(),
|
||||
})
|
||||
.save()
|
||||
.then(resolve);
|
||||
@ -391,9 +378,7 @@ export class Guild extends BaseClass {
|
||||
}
|
||||
|
||||
if (!body.channels || !body.channels.length) {
|
||||
body.channels = [
|
||||
{ id: "01", type: 0, name: "general", nsfw: false },
|
||||
];
|
||||
body.channels = [{ id: "01", type: 0, name: "general", nsfw: false }];
|
||||
}
|
||||
|
||||
const ids = new Map();
|
||||
@ -404,60 +389,29 @@ export class Guild extends BaseClass {
|
||||
}
|
||||
});
|
||||
|
||||
for (const channel of body.channels.sort((a) =>
|
||||
a.parent_id ? 1 : -1,
|
||||
)) {
|
||||
for (const channel of body.channels.sort((a) => (a.parent_id ? 1 : -1))) {
|
||||
const id = ids.get(channel.id) || Snowflake.generate();
|
||||
|
||||
const parent_id = ids.get(channel.parent_id);
|
||||
|
||||
const saved = await Channel.createChannel(
|
||||
{ ...channel, guild_id, id, parent_id },
|
||||
body.owner_id,
|
||||
{
|
||||
keepId: true,
|
||||
skipExistsCheck: true,
|
||||
skipPermissionCheck: true,
|
||||
skipEventEmit: true,
|
||||
},
|
||||
);
|
||||
const saved = await Channel.createChannel({ ...channel, guild_id, id, parent_id }, body.owner_id, {
|
||||
keepId: true,
|
||||
skipExistsCheck: true,
|
||||
skipPermissionCheck: true,
|
||||
skipEventEmit: true,
|
||||
});
|
||||
|
||||
await Guild.insertChannelInOrder(
|
||||
guild.id,
|
||||
saved.id,
|
||||
parent_id ?? channel.position ?? 0,
|
||||
guild,
|
||||
);
|
||||
await Guild.insertChannelInOrder(guild.id, saved.id, parent_id ?? channel.position ?? 0, guild);
|
||||
}
|
||||
|
||||
return guild;
|
||||
}
|
||||
|
||||
/** Insert a channel into the guild ordering by parent channel id or position */
|
||||
static async insertChannelInOrder(
|
||||
guild_id: string,
|
||||
channel_id: string,
|
||||
position: number,
|
||||
guild?: Guild,
|
||||
): Promise<number>;
|
||||
static async insertChannelInOrder(
|
||||
guild_id: string,
|
||||
channel_id: string,
|
||||
parent_id: string,
|
||||
guild?: Guild,
|
||||
): Promise<number>;
|
||||
static async insertChannelInOrder(
|
||||
guild_id: string,
|
||||
channel_id: string,
|
||||
insertPoint: string | number,
|
||||
guild?: Guild,
|
||||
): Promise<number>;
|
||||
static async insertChannelInOrder(
|
||||
guild_id: string,
|
||||
channel_id: string,
|
||||
insertPoint: string | number,
|
||||
guild?: Guild,
|
||||
): Promise<number> {
|
||||
static async insertChannelInOrder(guild_id: string, channel_id: string, position: number, guild?: Guild): Promise<number>;
|
||||
static async insertChannelInOrder(guild_id: string, channel_id: string, parent_id: string, guild?: Guild): Promise<number>;
|
||||
static async insertChannelInOrder(guild_id: string, channel_id: string, insertPoint: string | number, guild?: Guild): Promise<number>;
|
||||
static async insertChannelInOrder(guild_id: string, channel_id: string, insertPoint: string | number, guild?: Guild): Promise<number> {
|
||||
if (!guild)
|
||||
guild = await Guild.findOneOrFail({
|
||||
where: { id: guild_id },
|
||||
@ -465,17 +419,13 @@ export class Guild extends BaseClass {
|
||||
});
|
||||
|
||||
let position;
|
||||
if (typeof insertPoint == "string")
|
||||
position = guild.channel_ordering.indexOf(insertPoint) + 1;
|
||||
if (typeof insertPoint == "string") position = guild.channel_ordering.indexOf(insertPoint) + 1;
|
||||
else position = insertPoint;
|
||||
|
||||
guild.channel_ordering.remove(channel_id);
|
||||
|
||||
guild.channel_ordering.splice(position, 0, channel_id);
|
||||
await Guild.update(
|
||||
{ id: guild_id },
|
||||
{ channel_ordering: guild.channel_ordering },
|
||||
);
|
||||
await Guild.update({ id: guild_id }, { channel_ordering: guild.channel_ordering });
|
||||
return position;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user