aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/config/transfer_task.ex
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-17 11:45:44 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-17 11:45:44 +0300
commit60ba2339a244290f7353e8026032b1a5d185227c (patch)
tree9ae4ffdc87b7acd8c2ab093d6363545604a5501d /lib/pleroma/config/transfer_task.ex
parent29155137fdae15fccfaa68fb9c954e98078ce0c4 (diff)
downloadpleroma-60ba2339a244290f7353e8026032b1a5d185227c.tar.gz
saving to DB only added by user settings
Diffstat (limited to 'lib/pleroma/config/transfer_task.ex')
-rw-r--r--lib/pleroma/config/transfer_task.ex22
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex
index b39f9594e..828a297de 100644
--- a/lib/pleroma/config/transfer_task.ex
+++ b/lib/pleroma/config/transfer_task.ex
@@ -38,10 +38,18 @@ defmodule Pleroma.Config.TransferTask do
value = ConfigDB.from_binary(setting.value)
if group != :phoenix and key != :serve_endpoints do
- :ok = Application.put_env(group, key, value)
- end
+ default = Pleroma.Config.Holder.config(group, key)
+
+ merged_value =
+ if can_be_merged?(default, value) do
+ DeepMerge.deep_merge(default, value)
+ else
+ value
+ end
- group
+ :ok = Application.put_env(group, key, merged_value)
+ group
+ end
rescue
e ->
Logger.warn(
@@ -61,4 +69,12 @@ defmodule Pleroma.Config.TransferTask do
error -> Logger.warn(inspect(error))
end
end
+
+ defp can_be_merged?(val1, val2) when is_map(val1) and is_map(val2), do: true
+
+ defp can_be_merged?(val1, val2) when is_list(val1) and is_list(val2) do
+ Keyword.keyword?(val1) and Keyword.keyword?(val2)
+ end
+
+ defp can_be_merged?(_val1, _val2), do: false
end