mirror of
https://github.com/matrix-construct/construct
synced 2024-11-29 10:12:39 +01:00
ircd:Ⓜ️🧾 Implement matrix-org/matrix-doc#2285 Hidden read receipts.
This commit is contained in:
parent
6a59036f4e
commit
e842f6c383
2 changed files with 10 additions and 8 deletions
|
@ -502,7 +502,8 @@ command__read(const mutable_buffer &buf,
|
||||||
// Commit the receipt.
|
// Commit the receipt.
|
||||||
m::receipt::read(room_id, user, event_id, json::strung{json::members
|
m::receipt::read(room_id, user, event_id, json::strung{json::members
|
||||||
{
|
{
|
||||||
{ "ts", ms },
|
{ "ts", ms },
|
||||||
|
{ "m.hidden", true },
|
||||||
}});
|
}});
|
||||||
|
|
||||||
put(room_id, event_id);
|
put(room_id, event_id);
|
||||||
|
|
|
@ -253,17 +253,13 @@ ircd::m::receipt::read(const m::room::id &room_id,
|
||||||
user_id
|
user_id
|
||||||
};
|
};
|
||||||
|
|
||||||
const time_t &ms
|
|
||||||
{
|
|
||||||
options.get("ts", ircd::time<milliseconds>())
|
|
||||||
};
|
|
||||||
|
|
||||||
const auto evid
|
const auto evid
|
||||||
{
|
{
|
||||||
send(user_room, user_id, "ircd.read", room_id,
|
send(user_room, user_id, "ircd.read", room_id,
|
||||||
{
|
{
|
||||||
{ "event_id", event_id },
|
{ "event_id", event_id },
|
||||||
{ "ts", ms }
|
{ "ts", options.get("ts", ircd::time<milliseconds>()) },
|
||||||
|
{ "m.hidden", options.get("m.hidden", false) },
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -547,6 +543,11 @@ try
|
||||||
at<"content"_>(event).at("event_id")
|
at<"content"_>(event).at("event_id")
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// MSC2285; if m.hidden is set here we don't broadcast this receipt
|
||||||
|
// to the federation; nothing further to do here then.
|
||||||
|
if(at<"content"_>(event).get("m.hidden", false))
|
||||||
|
return;
|
||||||
|
|
||||||
// Lastly, we elide broadcasts of receipts for a user's own message.
|
// Lastly, we elide broadcasts of receipts for a user's own message.
|
||||||
m::user::id::buf sender_buf;
|
m::user::id::buf sender_buf;
|
||||||
if(m::get(std::nothrow, event_id, "sender", sender_buf) == user.user_id)
|
if(m::get(std::nothrow, event_id, "sender", sender_buf) == user.user_id)
|
||||||
|
|
Loading…
Reference in a new issue