mirror of
https://github.com/matrix-construct/construct
synced 2025-02-17 01:00:10 +01:00
modules/client/sync: Adjust the object creation for handlers; put the room head idx in data.
This commit is contained in:
parent
8dbd0ae829
commit
603cc98e30
7 changed files with 22 additions and 47 deletions
|
@ -95,6 +95,7 @@ struct ircd::m::sync::data
|
|||
const m::event *event {nullptr};
|
||||
const m::room *room {nullptr};
|
||||
string_view membership;
|
||||
event::idx room_head {0};
|
||||
|
||||
data(const m::user &user,
|
||||
const m::events::range &range,
|
||||
|
|
|
@ -134,10 +134,20 @@ ircd::m::sync::_rooms_polylog_room(data &data,
|
|||
data.out, room.room_id
|
||||
};
|
||||
|
||||
const event::idx room_head
|
||||
{
|
||||
head_idx(std::nothrow, room)
|
||||
};
|
||||
|
||||
const scope_restore<decltype(data.room_head)> their_head
|
||||
{
|
||||
data.room_head, room_head
|
||||
};
|
||||
|
||||
m::sync::for_each("rooms", [&data]
|
||||
(item &item)
|
||||
{
|
||||
json::stack::member member
|
||||
json::stack::object object
|
||||
{
|
||||
data.out, item.member_name()
|
||||
};
|
||||
|
|
|
@ -33,11 +33,6 @@ ircd::m::sync::room_account_data
|
|||
void
|
||||
ircd::m::sync::room_account_data_polylog(data &data)
|
||||
{
|
||||
json::stack::object object
|
||||
{
|
||||
data.out
|
||||
};
|
||||
|
||||
room_account_data_polylog_events(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,11 +39,6 @@ ircd::m::sync::rooms_ephemeral_linear(data &data)
|
|||
void
|
||||
ircd::m::sync::rooms_ephemeral_polylog(data &data)
|
||||
{
|
||||
json::stack::object object
|
||||
{
|
||||
data.out
|
||||
};
|
||||
|
||||
rooms_ephemeral_events_polylog(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -78,20 +78,8 @@ ircd::m::sync::room_state_linear(data &data)
|
|||
void
|
||||
ircd::m::sync::room_state_polylog(data &data)
|
||||
{
|
||||
json::stack::object object
|
||||
{
|
||||
data.out
|
||||
};
|
||||
|
||||
const auto head_idx
|
||||
{
|
||||
m::head_idx(std::nothrow, *data.room)
|
||||
};
|
||||
|
||||
if(!apropos(data, head_idx))
|
||||
return;
|
||||
|
||||
room_state_polylog_events(data);
|
||||
if(apropos(data, data.room_head))
|
||||
room_state_polylog_events(data);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -99,21 +99,11 @@ ircd::m::sync::_room_timeline_linear_events(data &data,
|
|||
void
|
||||
ircd::m::sync::room_timeline_polylog(data &data)
|
||||
{
|
||||
json::stack::object object
|
||||
{
|
||||
data.out
|
||||
};
|
||||
|
||||
assert(data.room);
|
||||
const auto head_idx
|
||||
{
|
||||
m::head_idx(std::nothrow, *data.room)
|
||||
};
|
||||
|
||||
if(!head_idx || !apropos(data, head_idx))
|
||||
if(!apropos(data, data.room_head))
|
||||
return;
|
||||
|
||||
// events
|
||||
assert(data.room);
|
||||
bool limited{false};
|
||||
m::event::id::buf prev
|
||||
{
|
||||
|
@ -123,13 +113,13 @@ ircd::m::sync::room_timeline_polylog(data &data)
|
|||
// prev_batch
|
||||
json::stack::member
|
||||
{
|
||||
object, "prev_batch", string_view{prev}
|
||||
data.out, "prev_batch", string_view{prev}
|
||||
};
|
||||
|
||||
// limited
|
||||
json::stack::member
|
||||
{
|
||||
object, "limited", json::value{limited}
|
||||
data.out, "limited", json::value{limited}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -50,16 +50,10 @@ ircd::m::sync::room_unread_notifications_polylog(data &data)
|
|||
index(last_read)
|
||||
};
|
||||
|
||||
data.commit();
|
||||
json::stack::object out
|
||||
{
|
||||
data.out
|
||||
};
|
||||
|
||||
// highlight_count
|
||||
json::stack::member
|
||||
{
|
||||
out, "highlight_count", json::value
|
||||
data.out, "highlight_count", json::value
|
||||
{
|
||||
_highlight_count(room, data.user, start_idx, data.range.second)
|
||||
}
|
||||
|
@ -68,11 +62,13 @@ ircd::m::sync::room_unread_notifications_polylog(data &data)
|
|||
// notification_count
|
||||
json::stack::member
|
||||
{
|
||||
out, "notification_count", json::value
|
||||
data.out, "notification_count", json::value
|
||||
{
|
||||
_notification_count(room, start_idx, data.range.second)
|
||||
}
|
||||
};
|
||||
|
||||
data.commit();
|
||||
}
|
||||
|
||||
long
|
||||
|
|
Loading…
Add table
Reference in a new issue