From 9836f65c05db475badb7ad1b5ca9e85ab75ff5dc Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 7 Mar 2023 18:18:19 -0800 Subject: [PATCH] modules/client/sync/rooms: Add conf items to toggle each polylog sync class. --- modules/client/sync/rooms.cc | 48 +++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/modules/client/sync/rooms.cc b/modules/client/sync/rooms.cc index d9ed638d8..c2e3c1d5a 100644 --- a/modules/client/sync/rooms.cc +++ b/modules/client/sync/rooms.cc @@ -20,6 +20,10 @@ namespace ircd::m::sync static bool _rooms_linear(data &, const string_view &membership); static bool rooms_linear(data &); + extern conf::item rooms_polylog_invite; + extern conf::item rooms_polylog_leave; + extern conf::item rooms_polylog_join; + extern conf::item rooms_polylog_ban; extern item rooms; } @@ -39,6 +43,34 @@ ircd::m::sync::rooms } }; +decltype(ircd::m::sync::rooms_polylog_ban) +ircd::m::sync::rooms_polylog_ban +{ + { "name", "ircd.m.sync.rooms.polylog.ban.enable" }, + { "default", true }, +}; + +decltype(ircd::m::sync::rooms_polylog_join) +ircd::m::sync::rooms_polylog_join +{ + { "name", "ircd.m.sync.rooms.polylog.join.enable" }, + { "default", true }, +}; + +decltype(ircd::m::sync::rooms_polylog_leave) +ircd::m::sync::rooms_polylog_leave +{ + { "name", "ircd.m.sync.rooms.polylog.leave.enable" }, + { "default", false }, +}; + +decltype(ircd::m::sync::rooms_polylog_invite) +ircd::m::sync::rooms_polylog_invite +{ + { "name", "ircd.m.sync.rooms.polylog.invite.enable" }, + { "default", true }, +}; + bool ircd::m::sync::rooms_linear(data &data) { @@ -151,19 +183,27 @@ ircd::m::sync::rooms_polylog(data &data) if(data.prefetch) data.user_rooms.prefetch(); - ret |= _rooms_polylog(data, "join", phase); + if(rooms_polylog_ban) + ret |= _rooms_polylog(data, "ban", phase); + if(data.phased && ret) return ret; - ret |= _rooms_polylog(data, "invite", phase); + if(rooms_polylog_join) + ret |= _rooms_polylog(data, "join", phase); + if(data.phased && ret) return ret; - ret |= _rooms_polylog(data, "leave", phase); + if(rooms_polylog_invite) + ret |= _rooms_polylog(data, "invite", phase); + if(data.phased && ret) return ret; - ret |= _rooms_polylog(data, "ban", phase); + if(rooms_polylog_leave) + ret |= _rooms_polylog(data, "leave", phase); + if(data.phased && ret) return ret;