class Maglev::Editor::BaseController

def current_maglev_page

def current_maglev_page
  @current_maglev_page ||= maglev_page_resources.find_by(id: params[:page_id])
end

def current_maglev_sections

def current_maglev_sections
  @current_maglev_sections ||= Maglev::Content::SectionContent.build_many(
    theme: maglev_theme,
    content: services.get_page_sections.call(page: current_maglev_page, locale: content_locale)
  )
end

def fetch_maglev_page

def fetch_maglev_page
  current_maglev_page
end

def fetch_maglev_sections

def fetch_maglev_sections
  current_maglev_sections
end

def fetch_maglev_site

def fetch_maglev_site
  maglev_site # simply force the fetching of the current site
end

def maglev_editing_route_context(page: nil, locale: nil)

def maglev_editing_route_context(page: nil, locale: nil)
  {
    locale: locale || ::Maglev::I18n.current_locale,
    page_id: page || current_maglev_page
  }.compact_blank
end

def maglev_home_page

def maglev_home_page
  @maglev_home_page ||= maglev_page_resources.home.first
end

def maglev_page_resources

def maglev_page_resources
  ::Maglev::Page
end

def maglev_site

def maglev_site
  @maglev_site ||= services.fetch_site.call
end

def maglev_theme

def maglev_theme
  @maglev_theme ||= maglev_services.fetch_theme.call
end

def redirect_to_real_root

def redirect_to_real_root
  redirect_to editor_real_root_path(maglev_editing_route_context)
end

def unpublished_changes?

def unpublished_changes?
  maglev_services.has_unpublished_changes.call(site: maglev_site, page: current_maglev_page, theme: maglev_theme)
end