🎨 remove deleteMessageAttachments and move to entity
This commit is contained in:
parent
c220f27894
commit
994406e5ce
@ -3,7 +3,6 @@ import { Router, Response, Request } from "express";
|
|||||||
import { route } from "@fosscord/api";
|
import { route } from "@fosscord/api";
|
||||||
import { handleMessage, postHandleMessage } from "@fosscord/api";
|
import { handleMessage, postHandleMessage } from "@fosscord/api";
|
||||||
import { MessageCreateSchema } from "../index";
|
import { MessageCreateSchema } from "../index";
|
||||||
import { deleteMessageAttachments } from "@fosscord/api/util/Attachments";
|
|
||||||
|
|
||||||
const router = Router();
|
const router = Router();
|
||||||
// TODO: message content/embed string length limit
|
// TODO: message content/embed string length limit
|
||||||
@ -34,7 +33,6 @@ router.patch("/", route({ body: "MessageCreateSchema", permission: "SEND_MESSAGE
|
|||||||
});
|
});
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
await deleteMessageAttachments(message_id, new_message.attachments), //This delete all the attachments not in the array
|
|
||||||
new_message!.save(),
|
new_message!.save(),
|
||||||
await emitEvent({
|
await emitEvent({
|
||||||
event: "MESSAGE_UPDATE",
|
event: "MESSAGE_UPDATE",
|
||||||
@ -60,7 +58,6 @@ router.delete("/", route({}), async (req: Request, res: Response) => {
|
|||||||
permission.hasThrow("MANAGE_MESSAGES");
|
permission.hasThrow("MANAGE_MESSAGES");
|
||||||
}
|
}
|
||||||
|
|
||||||
await deleteMessageAttachments(message_id);
|
|
||||||
await Message.delete({ id: message_id });
|
await Message.delete({ id: message_id });
|
||||||
|
|
||||||
await emitEvent({
|
await emitEvent({
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { Attachment } from "@fosscord/util";
|
|
||||||
import { deleteFile } from "@fosscord/api";
|
|
||||||
import { URL } from "url";
|
|
||||||
|
|
||||||
export async function deleteMessageAttachments(messageId: string, keep?: Attachment[]) {
|
|
||||||
let attachments = await Attachment.find({ message_id: messageId });
|
|
||||||
if (keep)
|
|
||||||
attachments = attachments.filter(x => !keep.map(k => k.id).includes(x.id));
|
|
||||||
await Promise.all(attachments.map(a => a.remove()));
|
|
||||||
|
|
||||||
attachments.forEach(a => deleteFile((new URL(a.url)).pathname)); //We don't need to await since this is done on the cdn
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
export * from "./Base64";
|
export * from "./Base64";
|
||||||
export * from "./cdn";
|
|
||||||
export * from "./FieldError";
|
export * from "./FieldError";
|
||||||
export * from "./ipAddress";
|
export * from "./ipAddress";
|
||||||
export * from "./Message";
|
export * from "./Message";
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
|
import { BeforeRemove, Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
|
||||||
|
import { URL } from "url";
|
||||||
|
import { deleteFile } from "../util/cdn";
|
||||||
import { BaseClass } from "./BaseClass";
|
import { BaseClass } from "./BaseClass";
|
||||||
|
|
||||||
@Entity("attachments")
|
@Entity("attachments")
|
||||||
@ -31,4 +33,9 @@ export class Attachment extends BaseClass {
|
|||||||
@JoinColumn({ name: "message_id" })
|
@JoinColumn({ name: "message_id" })
|
||||||
@ManyToOne(() => require("./Message").Message, (message: import("./Message").Message) => message.attachments)
|
@ManyToOne(() => require("./Message").Message, (message: import("./Message").Message) => message.attachments)
|
||||||
message: import("./Message").Message;
|
message: import("./Message").Message;
|
||||||
|
|
||||||
|
@BeforeRemove()
|
||||||
|
onDelete() {
|
||||||
|
return deleteFile(new URL(this.url).pathname);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user