Merge branch 'features/sec-websocket-protocol-header' into 'develop'
[akkoma] / lib / pleroma / config / transfer_task.ex
index 0d6ece8073b0f70ca8fb2208e0e3622f60a85fdd..cf880aa22939efeacd7182a52d2c74d13889d862 100644 (file)
@@ -9,9 +9,19 @@ defmodule Pleroma.Config.TransferTask do
   end
 
   def load_and_update_env do
-    if Pleroma.Config.get([:instance, :dynamic_configuration]) do
-      Pleroma.Repo.all(Config)
-      |> Enum.each(&update_env(&1))
+    if Pleroma.Config.get([:instance, :dynamic_configuration]) and
+         Ecto.Adapters.SQL.table_exists?(Pleroma.Repo, "config") do
+      for_restart =
+        Pleroma.Repo.all(Config)
+        |> Enum.map(&update_env(&1))
+
+      # We need to restart applications for loaded settings take effect
+      for_restart
+      |> Enum.reject(&(&1 in [:pleroma, :ok]))
+      |> Enum.each(fn app ->
+        Application.stop(app)
+        :ok = Application.start(app)
+      end)
     end
   end
 
@@ -24,11 +34,15 @@ defmodule Pleroma.Config.TransferTask do
           setting.key
         end
 
+      group = String.to_existing_atom(setting.group)
+
       Application.put_env(
-        :pleroma,
+        group,
         String.to_existing_atom(key),
         Config.from_binary(setting.value)
       )
+
+      group
     rescue
       e ->
         require Logger