fix(gateway): skip empty dm partner registration casts (#2677)

This commit is contained in:
Hampus
2026-09-11 13:49:03 +02:00
committed by GitHub
parent bcef7b3123
commit 81fd8c9aad
2 changed files with 15 additions and 2 deletions
@@ -29,12 +29,18 @@ register_all(State) ->
register_guild(_GuildId, GuildPid, State) -> register_guild(_GuildId, GuildPid, State) ->
case enabled(State) of case enabled(State) of
true -> true ->
cast_partners({GuildPid, undefined}, partner_ids(State), State), maybe_cast_partners({GuildPid, undefined}, partner_ids(State), State);
State;
false -> false ->
State State
end. end.
-spec maybe_cast_partners(term(), [user_id()], session_state()) -> session_state().
maybe_cast_partners(_GuildRef, [], State) ->
State;
maybe_cast_partners(GuildRef, Partners, State) ->
ok = cast_partners(GuildRef, Partners, State),
State.
-spec handle_mutual(guild_id(), [user_id()], session_state()) -> {noreply, session_state()}. -spec handle_mutual(guild_id(), [user_id()], session_state()) -> {noreply, session_state()}.
handle_mutual(GuildId, PartnerIds, State) -> handle_mutual(GuildId, PartnerIds, State) ->
case maps:get(GuildId, maps:get(guilds, State, #{}), undefined) of case maps:get(GuildId, maps:get(guilds, State, #{}), undefined) of
@@ -41,6 +41,13 @@ register_guild_sends_direct_partners_to_that_guild_test() ->
?assertEqual({update_dm_partners, ?SESSION_ID, [2, 3]}, receive_cast()) ?assertEqual({update_dm_partners, ?SESSION_ID, [2, 3]}, receive_cast())
end). end).
register_guild_without_direct_partners_stays_silent_test() ->
with_flag(true, fun() ->
State = (state(#{}))#{channels => #{300 => channel(3, [?SELF, 5, 6])}},
_ = session_dm_partners:register_guild(?GUILD, self(), State),
?assertEqual(none, receive_cast())
end).
register_all_is_inert_when_disabled_test() -> register_all_is_inert_when_disabled_test() ->
with_flag(false, fun() -> with_flag(false, fun() ->
_ = session_dm_partners:register_all(state(connected())), _ = session_dm_partners:register_all(state(connected())),