chore(sys): improve diff_hooks implement

This commit is contained in:
JianBo He 2022-04-19 10:03:40 +08:00
parent 65eae13e0b
commit 86d8dd2fb6
1 changed files with 18 additions and 17 deletions

View File

@ -147,23 +147,24 @@ post_config_update(_, _Req, NewSysConf, OldSysConf, _AppEnvs) ->
load_event_hooks(Added).
diff_hooks(NewSysConf, OldSysConf) ->
NewEvents = maps:get(sys_event_messages, NewSysConf, #{}),
OldEvents = maps:get(sys_event_messages, OldSysConf, #{}),
maps:fold(
fun(K, V, {Acc1, Acc2}) ->
case V =:= maps:get(K, OldEvents, false) of
true ->
{Acc1, Acc2};
false ->
case V of
true -> {[{K, V} | Acc1], [Acc2]};
false -> {Acc1, [{K, V} | Acc2]}
end
end
end,
{[], []},
NewEvents
).
NewEvents = maps:to_list(maps:get(sys_event_messages, NewSysConf, #{})),
OldEvents = maps:to_list(maps:get(sys_event_messages, OldSysConf, #{})),
diff_hooks(NewEvents, OldEvents, [], []).
diff_hooks([], [], Added, Removed) ->
{lists:reverse(Added), lists:reverse(Removed)};
diff_hooks([H | T1], [H | T2], Added, Removed) ->
diff_hooks(T1, T2, Added, Removed);
diff_hooks(
[New = {EventName, NewEnable} | T1],
[Old = {EventName, OldEnable} | T2],
Added,
Removed
) ->
case {NewEnable, OldEnable} of
{true, false} -> diff_hooks(T1, T2, [New | Added], Removed);
{false, true} -> diff_hooks(T1, T2, Added, [Old | Removed])
end.
%%--------------------------------------------------------------------
%% gen_server callbacks