Add special setting to ignore settings updates.
parent
a033f0fa87
commit
1875a1bcb5
|
@ -5,7 +5,8 @@ defmodule Farmbot.Bootstrap.SettingsSync do
|
|||
import Farmbot.System.ConfigStorage, only: [get_config_value: 3, update_config_value: 4, get_config_as_map: 0]
|
||||
|
||||
def start_link() do
|
||||
Task.start_link(__MODULE__, :run, [])
|
||||
run()
|
||||
:ignore
|
||||
end
|
||||
|
||||
def run() do
|
||||
|
@ -95,6 +96,7 @@ defmodule Farmbot.Bootstrap.SettingsSync do
|
|||
|
||||
def do_sync_settings(_unimportant_data) do
|
||||
Logger.info 3, "FBOS is the source of truth; Uploading data."
|
||||
update_config_value(:bool, "settings", "ignore_fbos_config", true)
|
||||
auto_sync = get_config_value(:bool, "settings", "auto_sync")
|
||||
beta_opt_in = get_config_value(:bool, "settings", "beta_opt_in")
|
||||
disable_factory_reset = get_config_value(:bool, "settings", "disable_factory_reset")
|
||||
|
@ -124,6 +126,7 @@ defmodule Farmbot.Bootstrap.SettingsSync do
|
|||
} |> Poison.encode!()
|
||||
Farmbot.HTTP.delete!("/api/fbos_config")
|
||||
Farmbot.HTTP.put!("/api/fbos_config", payload)
|
||||
update_config_value(:bool, "settings", "ignore_fbos_config", false)
|
||||
:ok
|
||||
end
|
||||
|
||||
|
|
|
@ -233,16 +233,25 @@ defmodule Farmbot.BotState.Transport.AMQP do
|
|||
{:noreply, [], state}
|
||||
end
|
||||
|
||||
def handle_fbos_config(_, _, %{state_cache: nil}) do
|
||||
# Don't update fbos config, if we don't have a state cache for whatever reason.
|
||||
{:noreply, [], state}
|
||||
end
|
||||
|
||||
def handle_fbos_config(_id, payload, state) do
|
||||
case Poison.decode(payload) do
|
||||
# TODO(Connor) What do I do with deletes?
|
||||
{:ok, %{"body" => nil}} -> {:noreply, [], state}
|
||||
{:ok, %{"body" => config}} ->
|
||||
# Logger.info 1, "Got fbos config from amqp: #{inspect config}"
|
||||
old = state.state_cache.configuration
|
||||
updated = Farmbot.Bootstrap.SettingsSync.apply_map(old, config)
|
||||
push_bot_state(state.chan, state.bot, %{state.state_cache | configuration: updated})
|
||||
{:noreply, [], state}
|
||||
if get_config_value(:bool, "settings", "ignore_fbos_config") do
|
||||
{:noreply, [], state}
|
||||
else
|
||||
case Poison.decode(payload) do
|
||||
# TODO(Connor) What do I do with deletes?
|
||||
{:ok, %{"body" => nil}} -> {:noreply, [], state}
|
||||
{:ok, %{"body" => config}} ->
|
||||
# Logger.info 1, "Got fbos config from amqp: #{inspect config}"
|
||||
old = state.state_cache.configuration
|
||||
updated = Farmbot.Bootstrap.SettingsSync.apply_map(old, config)
|
||||
push_bot_state(state.chan, state.bot, %{state.state_cache | configuration: updated})
|
||||
{:noreply, [], state}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
defmodule Farmbot.System.ConfigStorage.Migrations.IgnoreFbosConfig do
|
||||
use Ecto.Migration
|
||||
|
||||
import Farmbot.System.ConfigStorage.MigrationHelpers
|
||||
|
||||
def change do
|
||||
create_settings_config("ignore_fbos_config", :bool, true)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue