mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
modules/client/send_to_device: Move target into content.
modules/federation/sender: Adjust special cases.
This commit is contained in:
parent
82e01fcc09
commit
cec762de94
2 changed files with 22 additions and 6 deletions
|
@ -146,13 +146,10 @@ try
|
||||||
json::iov event, content;
|
json::iov event, content;
|
||||||
const json::iov::push push[]
|
const json::iov::push push[]
|
||||||
{
|
{
|
||||||
// The federation sender considers the room_id property of an event
|
|
||||||
// as the "destination" and knows what to do if it's actually some
|
|
||||||
// some other string like the user::id we're targeting here.
|
|
||||||
{ event, { "room_id", target } },
|
|
||||||
{ event, { "type", "m.direct_to_device" } },
|
{ event, { "type", "m.direct_to_device" } },
|
||||||
{ content, { "type", type } },
|
{ content, { "type", type } },
|
||||||
{ content, { "sender", sender } },
|
{ content, { "sender", sender } },
|
||||||
|
{ content, { "target", target } },
|
||||||
{ content, { "message_id", txnid } },
|
{ content, { "message_id", txnid } },
|
||||||
{ content, { "messages", out.completed() } },
|
{ content, { "messages", out.completed() } },
|
||||||
};
|
};
|
||||||
|
@ -160,6 +157,7 @@ try
|
||||||
m::vm::copts opts;
|
m::vm::copts opts;
|
||||||
opts.prop_mask.reset();
|
opts.prop_mask.reset();
|
||||||
opts.prop_mask.set("origin");
|
opts.prop_mask.set("origin");
|
||||||
|
opts.edu = true;
|
||||||
opts.notify_clients = false;
|
opts.notify_clients = false;
|
||||||
m::vm::eval
|
m::vm::eval
|
||||||
{
|
{
|
||||||
|
|
|
@ -145,6 +145,11 @@ send_worker()
|
||||||
void
|
void
|
||||||
send(const m::event &event)
|
send(const m::event &event)
|
||||||
{
|
{
|
||||||
|
const auto &type
|
||||||
|
{
|
||||||
|
json::get<"type"_>(event)
|
||||||
|
};
|
||||||
|
|
||||||
const auto &sender
|
const auto &sender
|
||||||
{
|
{
|
||||||
json::get<"sender"_>(event)
|
json::get<"sender"_>(event)
|
||||||
|
@ -155,6 +160,11 @@ send(const m::event &event)
|
||||||
json::get<"room_id"_>(event)
|
json::get<"room_id"_>(event)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const json::object &content
|
||||||
|
{
|
||||||
|
json::get<"content"_>(event)
|
||||||
|
};
|
||||||
|
|
||||||
if(json::get<"depth"_>(event) == json::undefined_number)
|
if(json::get<"depth"_>(event) == json::undefined_number)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -163,8 +173,16 @@ send(const m::event &event)
|
||||||
return send_to_room(event, m::room::id{room_id});
|
return send_to_room(event, m::room::id{room_id});
|
||||||
|
|
||||||
// target is remote server hosting user/device
|
// target is remote server hosting user/device
|
||||||
if(valid(m::id::USER, room_id))
|
if(type == "m.direct_to_device")
|
||||||
return send_to_user(event, m::user::id{room_id});
|
{
|
||||||
|
const json::string &target
|
||||||
|
{
|
||||||
|
content.get("target")
|
||||||
|
};
|
||||||
|
|
||||||
|
if(valid(m::id::USER, target))
|
||||||
|
return send_to_user(event, m::user::id(target));
|
||||||
|
}
|
||||||
|
|
||||||
// target is every remote server from every room a user is joined to.
|
// target is every remote server from every room a user is joined to.
|
||||||
if(valid(m::id::USER, sender))
|
if(valid(m::id::USER, sender))
|
||||||
|
|
Loading…
Reference in a new issue