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). load_event_hooks(Added).
diff_hooks(NewSysConf, OldSysConf) -> diff_hooks(NewSysConf, OldSysConf) ->
NewEvents = maps:get(sys_event_messages, NewSysConf, #{}), NewEvents = maps:to_list(maps:get(sys_event_messages, NewSysConf, #{})),
OldEvents = maps:get(sys_event_messages, OldSysConf, #{}), OldEvents = maps:to_list(maps:get(sys_event_messages, OldSysConf, #{})),
maps:fold( diff_hooks(NewEvents, OldEvents, [], []).
fun(K, V, {Acc1, Acc2}) ->
case V =:= maps:get(K, OldEvents, false) of diff_hooks([], [], Added, Removed) ->
true -> {lists:reverse(Added), lists:reverse(Removed)};
{Acc1, Acc2}; diff_hooks([H | T1], [H | T2], Added, Removed) ->
false -> diff_hooks(T1, T2, Added, Removed);
case V of diff_hooks(
true -> {[{K, V} | Acc1], [Acc2]}; [New = {EventName, NewEnable} | T1],
false -> {Acc1, [{K, V} | Acc2]} [Old = {EventName, OldEnable} | T2],
end Added,
end Removed
end, ) ->
{[], []}, case {NewEnable, OldEnable} of
NewEvents {true, false} -> diff_hooks(T1, T2, [New | Added], Removed);
). {false, true} -> diff_hooks(T1, T2, Added, [Old | Removed])
end.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% gen_server callbacks %% gen_server callbacks