static-fe overhaul (#236)
[akkoma] / lib / pleroma / web / static_fe / static_fe_view.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.StaticFE.StaticFEView do
6 use Pleroma.Web, :view
7
8 alias Calendar.Strftime
9 alias Pleroma.Emoji.Formatter
10 alias Pleroma.User
11 alias Pleroma.Web.Gettext
12 alias Pleroma.Web.MediaProxy
13 alias Pleroma.Web.Metadata.Utils
14 alias Pleroma.Web.Router.Helpers
15
16 use Phoenix.HTML
17
18 @media_types ["image", "audio", "video"]
19
20 def fetch_media_type(%{"mediaType" => mediaType}) do
21 Utils.fetch_media_type(@media_types, mediaType)
22 end
23
24 def time_ago(date) do
25 {:ok, date, _} = DateTime.from_iso8601(date)
26 now = DateTime.utc_now()
27
28 Timex.from_now(date, now)
29 end
30
31 def format_date(date) do
32 {:ok, date, _} = DateTime.from_iso8601(date)
33 Strftime.strftime!(date, "%Y/%m/%d %l:%M:%S %p UTC")
34 end
35
36 def instance_name, do: Pleroma.Config.get([:instance, :name], "Akkoma")
37
38 def open_content? do
39 Pleroma.Config.get(
40 [:frontend_configurations, :collapse_message_with_subjects],
41 false
42 )
43 end
44
45 def get_attachment_name(%{"name" => name}), do: name
46
47 def get_attachment_name(_), do: ""
48
49 def poll_percentage(count, total_votes) do
50 case count do
51 0 ->
52 "0%"
53
54 _ ->
55 Integer.to_string(trunc(count / total_votes * 100)) <> "%"
56 end
57 end
58 end