#include "app/settings/obb_settings_profiles.h"

namespace obb::settings {

namespace {
RuntimeSettings s_runtime;

void sync_flags() {
  switch (s_runtime.profile) {
    case Profile::kTownHall:
      s_runtime.wifi_enabled = true;
      s_runtime.hf_link_enabled = true;
      s_runtime.scroll_lock = false;
      s_runtime.telemetry_public = true;
      break;
    case Profile::kNightWatch:
      s_runtime.wifi_enabled = false;
      s_runtime.hf_link_enabled = true;
      s_runtime.scroll_lock = true;
      s_runtime.telemetry_public = false;
      break;
    case Profile::kCrisis:
      s_runtime.wifi_enabled = false;
      s_runtime.hf_link_enabled = false;
      s_runtime.scroll_lock = true;
      s_runtime.telemetry_public = false;
      break;
  }
}

}  // namespace

void settings_init() {
  s_runtime = RuntimeSettings{};
  sync_flags();
}

void apply_profile(Profile profile) {
  if (s_runtime.profile == profile) return;
  s_runtime.profile = profile;
  sync_flags();
}

const RuntimeSettings &current() {
  return s_runtime;
}

}  // namespace obb::settings