mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
fix(gateway): skip empty dm partner registration casts (#2677)
This commit is contained in:
@@ -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())),
|
||||||
|
|||||||
Reference in New Issue
Block a user