mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-06 02:42:37 +01:00
Allow multiple attachments in messages
This commit is contained in:
parent
d47c0d6a82
commit
f4368d6aa2
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,7 @@ import {
|
||||
} from "@fosscord/util";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { handleMessage, postHandleMessage, route } from "@fosscord/api";
|
||||
import multer from "multer";
|
||||
import multer, { Multer } from "multer";
|
||||
import { FindManyOptions, LessThan, MoreThan } from "typeorm";
|
||||
import { URL } from "url";
|
||||
|
||||
@ -50,8 +50,10 @@ export function isTextChannel(type: ChannelType): boolean {
|
||||
}
|
||||
|
||||
export interface MessageCreateSchema {
|
||||
type?: number;
|
||||
content?: string;
|
||||
nonce?: string;
|
||||
channel_id?: string;
|
||||
tts?: boolean;
|
||||
flags?: string;
|
||||
embeds?: Embed[];
|
||||
@ -161,7 +163,7 @@ const messageUpload = multer({
|
||||
limits: {
|
||||
fileSize: 1024 * 1024 * 100,
|
||||
fields: 10,
|
||||
files: 1
|
||||
// files: 1
|
||||
},
|
||||
storage: multer.memoryStorage()
|
||||
}); // max upload 50 mb
|
||||
@ -176,7 +178,7 @@ const messageUpload = multer({
|
||||
// Send message
|
||||
router.post(
|
||||
"/",
|
||||
messageUpload.single("file"),
|
||||
messageUpload.any(),
|
||||
async (req, res, next) => {
|
||||
if (req.body.payload_json) {
|
||||
req.body = JSON.parse(req.body.payload_json);
|
||||
@ -190,19 +192,22 @@ router.post(
|
||||
var body = req.body as MessageCreateSchema;
|
||||
const attachments: Attachment[] = [];
|
||||
|
||||
if (req.file) {
|
||||
try {
|
||||
const file = await uploadFile(`/attachments/${req.params.channel_id}`, req.file);
|
||||
attachments.push({ ...file, proxy_url: file.url });
|
||||
} catch (error) {
|
||||
return res.status(400).json(error);
|
||||
}
|
||||
}
|
||||
const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients", "recipients.user"] });
|
||||
if (!channel.isWritable()) {
|
||||
throw new HTTPError(`Cannot send messages to channel of type ${channel.type}`, 400)
|
||||
}
|
||||
|
||||
const files = req.files as Express.Multer.File[] ?? [];
|
||||
for (var currFile of files) {
|
||||
try {
|
||||
const file = await uploadFile(`/attachments/${channel.id}`, currFile);
|
||||
attachments.push({ ...file, proxy_url: file.url });
|
||||
}
|
||||
catch (error) {
|
||||
return res.status(400).json(error);
|
||||
}
|
||||
}
|
||||
|
||||
const embeds = body.embeds || [];
|
||||
if (body.embed) embeds.push(body.embed);
|
||||
let message = await handleMessage({
|
||||
|
Loading…
Reference in New Issue
Block a user