You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.3 KiB
JavaScript

"use strict";
const sendMessageEvent = require("../send-message-event");
const unmapImageOptions = require("../unmap-image-options");
const { validateArguments } = require("@validatem/core");
const required = require("@validatem/required");
const optionalObject = require("../optional-object");
const isNonEmptyString = require("@validatem/is-non-empty-string");
const isInteger = require("@validatem/is-integer");
const isRoomID = require("../is-room-id");
const isThumbnailOptions = require("../is-thumbnail-options");
const isSession = require("@modular-matrix/is-session");
const isMXC = require("@modular-matrix/is-mxc-url");
module.exports = function sendImageEvent(_session, _options) {
let [ session, options ] = validateArguments(arguments, {
session: [ required, isSession ],
options: [ required, {
roomID: [ required, isRoomID ],
description: [ required, isNonEmptyString ],
image: [ required, {
url: [ required, isMXC ],
displayWidth: [ isInteger ],
displayHeight: [ isInteger ],
mimetype: [ isNonEmptyString ],
filesize: [ isInteger ],
}],
thumbnail: optionalObject(isThumbnailOptions)
}]
});
return sendMessageEvent(session, {
roomID: options.roomID,
type: "m.room.message",
content: {
msgtype: "m.image",
... unmapImageOptions(options)
}
});
};