chore(sys): improve diff_hooks implement
This commit is contained in:
parent
65eae13e0b
commit
86d8dd2fb6
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue