61 lines
1.9 KiB
Elixir
61 lines
1.9 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Pleroma.Web.StaticFE.StaticFEView do
|
|
use Pleroma.Web, :view
|
|
|
|
alias Calendar.Strftime
|
|
alias Pleroma.Emoji.Formatter
|
|
alias Pleroma.User
|
|
alias Pleroma.Web.Endpoint
|
|
alias Pleroma.Web.Gettext
|
|
alias Pleroma.Web.MediaProxy
|
|
alias Pleroma.Web.Metadata.Utils
|
|
alias Pleroma.Web.Router.Helpers
|
|
|
|
use Phoenix.HTML
|
|
|
|
@media_types ["image", "audio", "video"]
|
|
|
|
def fetch_media_type(%{"mediaType" => mediaType}) do
|
|
Utils.fetch_media_type(@media_types, mediaType)
|
|
end
|
|
|
|
def time_ago(date) do
|
|
{:ok, date, _} = DateTime.from_iso8601(date)
|
|
{:ok, now} = DateTime.now("Etc/UTC")
|
|
|
|
years = now.year - date.year
|
|
months = now.month - date.month
|
|
days = now.day - date.day
|
|
hours = now.hour - date.hour
|
|
minutes = now.minute - date.minute
|
|
seconds = now.second - date.second
|
|
cond do
|
|
years > 0 -> ngettext("1 year ago", "%{count} years ago", years)
|
|
months > 0 -> ngettext("1 month ago", "%{count} months ago", months)
|
|
days > 6 -> ngettext("1 week ago", "%{count} weeks ago", trunc(days / 7))
|
|
days > 0 -> ngettext("1 day ago", "%{count} days ago", days)
|
|
hours > 0 -> ngettext("1 hour ago", "%{count} hours ago", hours)
|
|
minutes > 0 -> ngettext("1 minute ago", "%{count} minutes ago", minutes)
|
|
seconds > 0 -> ngettext("1 second ago", "%{count} seconds ago", seconds)
|
|
true -> gettext("now")
|
|
end
|
|
end
|
|
|
|
def format_date(date) do
|
|
{:ok, date, _} = DateTime.from_iso8601(date)
|
|
Strftime.strftime!(date, "%Y/%m/%d %l:%M:%S %p UTC")
|
|
end
|
|
|
|
def instance_name, do: Pleroma.Config.get([:instance, :name], "Akkoma")
|
|
|
|
def open_content? do
|
|
Pleroma.Config.get(
|
|
[:frontend_configurations, :collapse_message_with_subjects],
|
|
false
|
|
)
|
|
end
|
|
end
|