mirror of
https://github.com/spacebarchat/server.git
synced 2026-03-30 18:15:41 +00:00
some fixes
This commit is contained in:
@@ -50,7 +50,6 @@ router.post(
|
||||
where: { id: channel_id },
|
||||
});
|
||||
const user = await User.findOneOrFail({ where: { id: req.user_id } });
|
||||
const recipient = Recipient.create({ channel_id: message.id, user });
|
||||
|
||||
const thread = await Channel.createChannel(
|
||||
{
|
||||
@@ -78,8 +77,6 @@ router.post(
|
||||
{ skipPermissionCheck: true, keepId: true, skipEventEmit: true },
|
||||
);
|
||||
|
||||
recipient.save();
|
||||
|
||||
message.thread = thread;
|
||||
message.flags ||= 1 << 5;
|
||||
await sendMessage({
|
||||
|
||||
@@ -533,16 +533,6 @@ router.post(
|
||||
|
||||
// no await as it shouldnt block the message send function and silently catch error
|
||||
postHandleMessage(message).catch((e) => console.error("[Message] post-message handler failed", e));
|
||||
if (channel.type === ChannelType.GUILD_PUBLIC_THREAD && channel.recipients && !channel.recipients.find((_) => _.user.id === req.user_id)) {
|
||||
const rec = Recipient.create({
|
||||
channel_id: channel.id,
|
||||
user_id: req.user_id,
|
||||
});
|
||||
channel.recipients.push(rec);
|
||||
rec.save().then(() => {
|
||||
channel.save();
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(
|
||||
message.withSignedAttachments(
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
*/
|
||||
|
||||
import { handleMessage, postHandleMessage, route, sendMessage } from "@spacebar/api";
|
||||
import { Message, Channel, emitEvent, User, MessageUpdateEvent, Recipient, uploadFile, Attachment, Member, ReadState, MessageCreateEvent } from "@spacebar/util";
|
||||
import { MessageThreadCreationSchema, ChannelType, MessageType, ThreadCreationSchema, MessageCreateAttachment, MessageCreateCloudAttachment } from "@spacebar/schemas";
|
||||
import { Channel, emitEvent, User, uploadFile, Attachment, Member, ReadState, MessageCreateEvent } from "@spacebar/util";
|
||||
import { ChannelType, MessageType, ThreadCreationSchema, MessageCreateAttachment, MessageCreateCloudAttachment } from "@spacebar/schemas";
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { messageUpload } from "./messages";
|
||||
@@ -81,9 +81,6 @@ router.post(
|
||||
void 0,
|
||||
{ skipPermissionCheck: true, keepId: true, skipEventEmit: true },
|
||||
);
|
||||
const recipient = Recipient.create({ channel_id: channel.id, user });
|
||||
|
||||
await recipient.save();
|
||||
|
||||
await Promise.all([
|
||||
emitEvent({
|
||||
|
||||
@@ -243,7 +243,7 @@ export async function handleMessage(opts: MessageOptions): Promise<Message> {
|
||||
|
||||
if (opts.message_reference.type != 1) {
|
||||
if (opts.message_reference.guild_id !== channel.guild_id) throw new HTTPError("You can only reference messages from this guild");
|
||||
if (opts.message_reference.channel_id !== opts.channel_id && opts.type !== MessageType.THREAD_STARTER_MESSAGE)
|
||||
if (opts.message_reference.channel_id !== opts.channel_id && opts.type !== MessageType.THREAD_STARTER_MESSAGE && opts.type !== MessageType.THREAD_CREATED)
|
||||
throw new HTTPError("You can only reference messages from this channel");
|
||||
}
|
||||
|
||||
|
||||
@@ -419,7 +419,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
||||
|
||||
const threadMembers = await ThreadMember.find({
|
||||
where: { member_idx: In(member_idx) },
|
||||
relations: { channel: { recipients: { user: true } } },
|
||||
relations: { channel: { thread_members: { member: true } } },
|
||||
});
|
||||
const threadMemberTime = taskSw.getElapsedAndReset();
|
||||
|
||||
|
||||
@@ -218,6 +218,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
|
||||
if (!channel_id) return;
|
||||
|
||||
const permissions = await getPermission(this.user_id, guild_id, channel_id);
|
||||
console.log(permissions);
|
||||
permissions.hasThrow("VIEW_CHANNEL");
|
||||
|
||||
const ranges = channels[channel_id];
|
||||
|
||||
@@ -57,6 +57,12 @@ export class Channel extends BaseClass {
|
||||
})
|
||||
recipients?: Recipient[];
|
||||
|
||||
@OneToMany(() => ThreadMember, (member: ThreadMember) => member.channel, {
|
||||
cascade: true,
|
||||
orphanedRowAction: "delete",
|
||||
})
|
||||
thread_members?: ThreadMember[];
|
||||
|
||||
@Column({ nullable: true })
|
||||
last_message_id?: string;
|
||||
|
||||
@@ -676,7 +682,7 @@ export class Channel extends BaseClass {
|
||||
user_limit: this.user_limit || undefined,
|
||||
rate_limit_per_user: this.rate_limit_per_user || undefined,
|
||||
owner_id: this.owner_id || undefined,
|
||||
...(this.isThread() && this.recipients ? { member_ids_preview: this.recipients.map((_) => _.user.id) } : {}),
|
||||
...(this.isThread() && this.thread_members ? { member_ids_preview: this.thread_members.map((_) => _.member.id) } : {}),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
23
src/util/migration/postgres/1770168396106-threadMembers.ts
Normal file
23
src/util/migration/postgres/1770168396106-threadMembers.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ThreadMembers1770168396106 implements MigrationInterface {
|
||||
name = "ThreadMembers1770168396106";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_606ac45e8756d3440c584477f4e"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_bde0970b6a26bdbd83508addd2"`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_38d4f704373da3f0dc9b352acs9" ON "thread_members" ("id", "member_idx") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_38d4f704373da3f0dc9b352ac9"`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_bde0970b6a26bdbd83508addd2" ON "thread_members" ("id", "member_idx") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_606ac45e8756d3440c584477f4e" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user