diff --git a/include/ircd/m/media.h b/include/ircd/m/media.h index f7601c5e4..e4e170aa0 100644 --- a/include/ircd/m/media.h +++ b/include/ircd/m/media.h @@ -33,7 +33,7 @@ namespace ircd::m::media::file room::id::buf room_id(const mxc &); size_t read(const room &, const closure &); - size_t write(const room &, const user::id &, const const_buffer &content, const string_view &content_type); + size_t write(const room &, const user::id &, const const_buffer &content, const string_view &content_type, const string_view &name = {}); room::id::buf download(const mxc &, diff --git a/matrix/media.cc b/matrix/media.cc index 5e5bfb6eb..87b94b594 100644 --- a/matrix/media.cc +++ b/matrix/media.cc @@ -221,7 +221,8 @@ size_t ircd::m::media::file::write(const m::room &room, const m::user::id &user_id, const const_buffer &content, - const string_view &content_type) + const string_view &content_type, + const string_view &name) try { static const size_t BLK_SZ @@ -256,6 +257,12 @@ try { "mime_type", content_type } }); + if(name) + send(room, user_id, "ircd.file.stat.name", "", json::members + { + { "name", name } + }); + size_t off{0}, wrote{0}; while(off < size(content)) { diff --git a/modules/media/upload.cc b/modules/media/upload.cc index c8b676447..f4a3e39b4 100644 --- a/modules/media/upload.cc +++ b/modules/media/upload.cc @@ -75,7 +75,7 @@ post__upload(client &client, const size_t written { - m::media::file::write(room, request.user_id, buf, content_type) + m::media::file::write(room, request.user_id, buf, content_type, filename) }; char uribuf[256];