fix(gateway): resend thread member lists on resume and leave (#3372)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-10 19:17:08 +02:00
1 parent 70fd9e6331
commit 7197371123
3 files changed
+50 -8

No files matched your search

@@ -293,12 +293,16 @@ after_store_event(channel_delete, Data, Tab, State) ->
end,
State;
after_store_event(guild_member_remove, Data, Tab, State) ->
_ =
case guild_state_member:extract_user_id(Data) of
UserId when is_integer(UserId) -> guild_thread_store:remove_user(Tab, UserId);
_ -> []
end,
State;
case guild_state_member:extract_user_id(Data) of
UserId when is_integer(UserId) ->
lists:foldl(
fun guild_thread_subscriptions:member_lists_changed/2,
State,
guild_thread_store:remove_user(Tab, UserId)
);
_ ->
State
end;
after_store_event(guild_member_update, Data, _Tab, State) ->
case guild_state_member:extract_user_id(Data) of
UserId when is_integer(UserId) ->
@@ -75,7 +75,6 @@ apply_threads_flag(_Other, Session) ->
-spec apply_member_lists(term(), map(), guild_state()) -> {map(), [integer()]}.
apply_member_lists(Ids, Session, State) when is_list(Ids) ->
Previous = maps:get(thread_member_lists, Session, []),
Viewable = lists:sublist(
[Id || Id <- lists:usort(Ids), viewable_thread(Session, Id, State)], ?MAX_MEMBER_LISTS
),
@@ -84,7 +83,7 @@ apply_member_lists(Ids, Session, State) when is_list(Ids) ->
[] -> maps:remove(thread_member_lists, Session);
_ -> Session#{thread_member_lists => Viewable}
end,
{Updated, Viewable -- Previous};
{Updated, Viewable};
apply_member_lists(_Other, Session, _State) ->
{Session, []}.