0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-09-27 11:18:51 +02:00

modules/client/sync: Adjust the object creation for handlers; put the room head idx in data.

This commit is contained in:
Jason Volk 2019-02-22 09:25:00 -08:00
parent 8dbd0ae829
commit 603cc98e30
7 changed files with 22 additions and 47 deletions

View file

@ -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,

View file

@ -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()
};

View file

@ -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);
}

View file

@ -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);
}

View file

@ -78,19 +78,7 @@ 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;
if(apropos(data, data.room_head))
room_state_polylog_events(data);
}

View file

@ -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}
};
}

View file

@ -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