diff --git a/lib/nulla_web/components/templates.ex b/lib/nulla_web/components/templates.ex index acec111..817fa17 100644 --- a/lib/nulla_web/components/templates.ex +++ b/lib/nulla_web/components/templates.ex @@ -1,77 +1,92 @@ -defmodule NullaWeb.UserHTML do +defmodule NullaWeb.ActorHTML do use NullaWeb, :html - embed_templates "templates/user/*" + embed_templates "templates/actor/*" def format_birthdate(date) do formatted = Date.to_string(date) |> String.replace("-", "/") - age = Timex.diff(Timex.today(), date, :years) + + today = Date.utc_today() + + age = + today.year - date.year - + if {today.month, today.day} < {date.month, date.day}, do: 1, else: 0 + "#{formatted} (#{age} years old)" end def format_registration_date(date) do - now = Timex.now() + now = Date.utc_today() formatted = Date.to_string(date) |> String.replace("-", "/") - - diff = Timex.diff(now, date, :days) - - relative = - cond do - diff == 0 -> - "today" - - diff == 1 -> - "1 day ago" - - diff < 30 -> - "#{diff} days ago" - - diff < 365 -> - months = Timex.diff(now, date, :months) - if months == 1, do: "1 month ago", else: "#{months} months ago" - - true -> - years = Timex.diff(now, date, :years) - if years == 1, do: "1 year ago", else: "#{years} years ago" - end - - "#{formatted} (#{relative})" + + diff_days = Date.diff(now, date) + + cond do + diff_days == 0 -> + "#{formatted} (today)" + + diff_days == 1 -> + "#{formatted} (1 day ago)" + + diff_days < 30 -> + "#{formatted} (#{diff_days} days ago)" + + diff_days < 365 -> + year_diff = now.year - date.year + month_diff = now.month - date.month + day_correction = if now.day < date.day, do: -1, else: 0 + months = year_diff * 12 + month_diff + day_correction + if months == 1 do + "#{formatted} (1 month ago)" + else + "#{formatted} (#{months} months ago)" + end + + true -> + year_diff = now.year - date.year + years = if {now.month, now.day} < {date.month, date.day}, do: year_diff - 1, else: year_diff + if years == 1 do + "#{formatted} (1 year ago)" + else + "#{formatted} (#{years} years ago)" + end + end end def format_note_datetime(datetime) do - Timex.format!(datetime, "{0D} {Mfull} {YYYY}, {h24}:{m}", :strftime) + Calendar.strftime(datetime, "%d %B %Y, %H:%M") end def format_note_datetime_diff(datetime) do - now = Timex.now() - diff = Timex.diff(now, datetime, :seconds) + now = DateTime.utc_now() + diff_seconds = DateTime.diff(now, datetime) cond do - diff < 60 -> + diff_seconds < 60 -> "now" - diff < 3600 -> - minutes = div(diff, 60) + diff_seconds < 3600 -> + minutes = div(diff_seconds, 60) "#{minutes}m ago" - diff < 86400 -> - hours = div(diff, 3600) + diff_seconds < 86400 -> + hours = div(diff_seconds, 3600) "#{hours}h ago" - diff < 518_400 -> - days = div(diff, 86400) + diff_seconds < 604_800 -> + days = div(diff_seconds, 86400) "#{days}d ago" - diff < 2_419_200 -> - weeks = div(diff, 604_800) + diff_seconds < 2_592_000 -> + weeks = div(diff_seconds, 604_800) "#{weeks}w ago" - diff < 28_512_000 -> - months = Timex.diff(now, datetime, :months) + diff_seconds < 31_536_000 -> + months = div(diff_seconds, 2_592_000) "#{months}mo ago" true -> - years = Timex.diff(now, datetime, :years) + years = div(diff_seconds, 31_536_000) "#{years}y ago" end end diff --git a/lib/nulla_web/controllers/actor_controller.ex b/lib/nulla_web/controllers/actor_controller.ex index c79ae22..e3c55ea 100644 --- a/lib/nulla_web/controllers/actor_controller.ex +++ b/lib/nulla_web/controllers/actor_controller.ex @@ -24,13 +24,12 @@ defmodule NullaWeb.ActorController do |> send_resp(200, Jason.encode!(ActivityPub.actor(actor))) else notes = Note.get_latest_notes(actor.id) - following = Utils.count_following_by_username!(actor.preferredUsername) - followers = Utils.count_followers_by_username!(actor.preferredUsername) + following = 0 + followers = 0 render( conn, :show, - domain: domain, actor: actor, notes: notes, following: following, diff --git a/mix.exs b/mix.exs index da0bd5b..09ceeec 100644 --- a/mix.exs +++ b/mix.exs @@ -43,7 +43,6 @@ defmodule Nulla.MixProject do {:phoenix_live_dashboard, "~> 0.8.3"}, {:esbuild, "~> 0.8", runtime: Mix.env() == :dev}, {:tailwind, "~> 0.2.0", runtime: Mix.env() == :dev}, - {:timex, "~> 3.7"}, {:heroicons, github: "tailwindlabs/heroicons", tag: "v2.1.1",