diff --git a/lib/unfinal_web/live/live_live.ex b/lib/unfinal_web/live/live_live.ex index 0e457d7..7b1e6fb 100644 --- a/lib/unfinal_web/live/live_live.ex +++ b/lib/unfinal_web/live/live_live.ex @@ -69,7 +69,8 @@ defmodule UnfinalWeb.LiveLive do excerpts = excerpts(active_paths, socket.assigns.excerpts) - {:noreply, assign(socket, active_paths: active_paths, sorted_paths: sorted_paths(), excerpts: excerpts)} + {:noreply, + assign(socket, active_paths: active_paths, sorted_paths: sorted_paths(), excerpts: excerpts)} end def handle_info({:content_updated, path, %{content: content}}, socket) do @@ -131,8 +132,8 @@ defmodule UnfinalWeb.LiveLive do @topic |> Presence.list() |> Enum.map(fn {_key, %{metas: [meta | _]}} -> {meta.path, meta.joined_at} end) + |> Enum.reject(fn {path, _ts} -> root_namespace_path?(path) end) |> Enum.sort_by(fn {_, ts} -> -ts end) - |> Enum.map(fn {path, _} -> path end) end defp excerpts(active_paths, current_excerpts) do @@ -157,12 +158,28 @@ defmodule UnfinalWeb.LiveLive do defp document_href("/" <> path), do: "/n/" <> path defp document_href(_path), do: "/n" - defp visible_recent(recent_edits, active_paths, limit \\ 10) do + defp root_namespace_path?("/"), do: true + defp root_namespace_path?("/__root__" <> _rest), do: true + defp root_namespace_path?(_path), do: false + + defp time_ago(timestamp) when is_integer(timestamp) do + seconds = System.system_time(:second) - timestamp + + cond do + seconds < 60 -> "#{seconds}s ago" + seconds < 3600 -> "#{div(seconds, 60)}m ago" + seconds < 86400 -> "#{div(seconds, 3600)}h ago" + true -> "#{div(seconds, 86400)}d ago" + end + end + + defp visible_recent(recent_edits, active_paths, excerpts, limit \\ 10) do recent_edits |> Enum.reject(fn {path, _ts} -> MapSet.member?(active_paths, path) end) + |> Enum.reject(fn {path, _ts} -> root_namespace_path?(path) end) + |> Enum.reject(fn {path, _ts} -> excerpt(Map.get(excerpts, path, "")) == "" end) |> Enum.sort_by(fn {_, ts} -> -ts end) |> Enum.take(limit) - |> Enum.map(fn {path, _ts} -> path end) end @impl true @@ -186,39 +203,52 @@ defmodule UnfinalWeb.LiveLive do

Spy on works in progress ;)

-
+
Nothing being edited right now.
-
+ - <% visible_recent = visible_recent(@recent_edits, @active_paths) %> + <% visible_recent = visible_recent(@recent_edits, @active_paths, @excerpts) %>

-

Recently edited