philomena/lib/philomena_web/views/layout_view.ex
2019-11-02 18:22:30 -04:00

45 lines
1.6 KiB
Elixir

defmodule PhilomenaWeb.LayoutView do
use PhilomenaWeb, :view
def render_time(conn) do
(Time.diff(Time.utc_now(), conn.assigns[:start_time], :microsecond) / 1000.0)
|> Float.round(3)
|> Float.to_string()
end
def hostname() do
{:ok, host} = :inet.gethostname()
host |> to_string
end
def clientside_data(conn) do
extra = Map.get(conn.assigns, :clientside_data, [])
interactions = Map.get(conn.assigns, :interactions, [])
user = conn.assigns.current_user
filter = conn.assigns.current_filter
data = [
filter_id: filter.id,
hidden_tag_list: Jason.encode!(filter.hidden_tag_ids),
hidden_filter: Search.String.normalize(filter.hidden_complex_str || ""),
spoilered_tag_list: Jason.encode!(filter.spoilered_tag_ids),
spoilered_filter: Search.String.normalize(filter.spoilered_complex_str || ""),
user_id: if(user, do: user.id, else: nil),
user_name: if(user, do: user.name, else: nil),
user_slug: if(user, do: user.slug, else: nil),
user_is_signed_in: !!user,
user_can_edit_filter: if(user, do: filter.user_id == user.id, else: false),
spoiler_type: if(user, do: user.spoiler_type, else: "static"),
watched_tag_list: Jason.encode!(if(user, do: user.watched_tag_ids, else: [])),
fancy_tag_edit: if(user, do: user.fancy_tag_field_on_edit, else: true),
fancy_tag_upload: if(user, do: user.fancy_tag_field_on_upload, else: true),
interactions: Jason.encode!(interactions),
ignored_tag_list: "[]"
]
data = Keyword.merge(data, extra)
tag(:div, class: "js-datastore", data: data)
end
end