aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-20 18:25:00 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-20 18:25:00 +0300
commit8023fa48dbc68fe696337a4da940b95fd209e304 (patch)
tree432600b7446f65e05fb4bbe2994c7369b82c79f0 /lib
parentefb8ef5abee1a8defa2bfba40ad1065db4c09ddf (diff)
downloadpleroma-8023fa48dbc68fe696337a4da940b95fd209e304.tar.gz
merge fix
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/config/config_db.ex20
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex2
2 files changed, 20 insertions, 2 deletions
diff --git a/lib/pleroma/config/config_db.ex b/lib/pleroma/config/config_db.ex
index 85a049f8a..0091f7a1b 100644
--- a/lib/pleroma/config/config_db.ex
+++ b/lib/pleroma/config/config_db.ex
@@ -102,7 +102,7 @@ defmodule Pleroma.ConfigDB do
subkeys = sub_key_full_update(group, key, intersect_keys)
- merged_value = DeepMerge.deep_merge(old_value, new_value)
+ merged_value = ConfigDB.merge(old_value, new_value)
Enum.reduce(subkeys, merged_value, fn subkey, acc ->
Keyword.put(acc, subkey, new_value[subkey])
@@ -127,6 +127,24 @@ defmodule Pleroma.ConfigDB do
|> List.flatten()
end
+ def merge(config1, config2) when is_list(config1) and is_list(config2) do
+ Keyword.merge(config1, config2, fn _, app1, app2 ->
+ if Keyword.keyword?(app1) and Keyword.keyword?(app2) do
+ Keyword.merge(app1, app2, &deep_merge/3)
+ else
+ app2
+ end
+ end)
+ end
+
+ defp deep_merge(_key, value1, value2) do
+ if Keyword.keyword?(value1) and Keyword.keyword?(value2) do
+ Keyword.merge(value1, value2, &deep_merge/3)
+ else
+ value2
+ end
+ end
+
@full_key_update [
{:pleroma, :ecto_repos},
{:quack, :meta},
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index cc658dc0e..30343a9f1 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -826,7 +826,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
else
merged =
Pleroma.Config.Holder.config()
- |> DeepMerge.deep_merge(configs)
+ |> ConfigDB.merge(configs)
|> Enum.map(fn {group, values} ->
Enum.map(values, fn {key, value} ->
db =