From 7469c0913070d6c46ec094baa80adb657b8d0e3c Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 14 Aug 2022 17:29:23 -0700 Subject: [PATCH] modules/m_room_message: Stub media-specific effects hook. --- modules/m_room_message.cc | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/modules/m_room_message.cc b/modules/m_room_message.cc index c63077bb0..468863355 100644 --- a/modules/m_room_message.cc +++ b/modules/m_room_message.cc @@ -10,7 +10,10 @@ namespace ircd::m { + static void room_message_media(const event &, vm::eval &); static void room_message_info(const event &, vm::eval &); + + extern hookfn room_message_media_hook; extern hookfn room_message_info_hook; extern log::log room_message_log; } @@ -37,6 +40,16 @@ ircd::m::room_message_info_hook } }; +decltype(ircd::m::room_message_media_hook) +ircd::m::room_message_media_hook +{ + room_message_media, + { + { "_site", "vm.effects" }, + { "type", "m.room.message" }, + } +}; + void ircd::m::room_message_info(const event &event, vm::eval &eval) @@ -67,3 +80,58 @@ ircd::m::room_message_info(const event &event, size(body) > 128? "..."_sv : string_view{} }; } + +void +ircd::m::room_message_media(const event &event, + vm::eval &eval) +{ + const m::room::message msg + { + json::get<"content"_>(event) + }; + + const auto &msgtype + { + json::get<"msgtype"_>(msg) + }; + + const bool match + { + false + || msgtype == "m.image" + || msgtype == "m.video" + || msgtype == "m.audio" + || msgtype == "m.file" + }; + + if(!match) + return; + + const auto &url + { + json::get<"url"_>(msg) + }; + + if(!url) + return; + + const media::mxc mxc + { + url + }; + + const auto file_room_id + { + media::file::room_id(mxc) + }; + + log::debug + { + room_message_log, "%s posted %s at %s in %s with %s", + json::get<"sender"_>(event), + msgtype, + json::get<"url"_>(msg), + json::get<"room_id"_>(event), + string_view{event.event_id}, + }; +}