diff --git a/lib/frenzy_web/controllers/group_controller.ex b/lib/frenzy_web/controllers/group_controller.ex index fcde968..4b08f49 100644 --- a/lib/frenzy_web/controllers/group_controller.ex +++ b/lib/frenzy_web/controllers/group_controller.ex @@ -1,8 +1,9 @@ defmodule FrenzyWeb.GroupController do use FrenzyWeb, :controller - alias Frenzy.{Repo, Group, Feed} + alias Frenzy.{Repo, Group, Feed, Item, Paginator} alias FrenzyWeb.Router.Helpers, as: Routes alias FrenzyWeb.Endpoint + import Ecto.Query plug :user_owns_group @@ -95,4 +96,25 @@ defmodule FrenzyWeb.GroupController do {:ok, _} = Repo.delete(group) redirect(conn, to: Routes.group_path(Endpoint, :index)) end + + def read(conn, params) do + group = conn.assigns[:group] |> Repo.preload(:feeds) + feed_ids = Enum.map(group.feeds, fn feed -> feed.id end) + + items = + Item + |> where([i], i.feed_id in ^feed_ids) + |> Paginator.paginate(params) + |> limit(50) + |> preload(:feed) + |> Repo.all() + |> Enum.sort_by(fn item -> item.date end, fn a, b -> + DateTime.compare(a, b) == :gt + end) + + render(conn, "read.html", %{ + group: group, + items: items + }) + end end diff --git a/lib/frenzy_web/router.ex b/lib/frenzy_web/router.ex index bba11c3..482b512 100644 --- a/lib/frenzy_web/router.ex +++ b/lib/frenzy_web/router.ex @@ -48,6 +48,7 @@ defmodule FrenzyWeb.Router do get "/", GroupController, :index resources "/groups", GroupController + get "/groups/:id/read", GroupController, :read resources "/feeds", FeedController, except: [:index, :new] post "/feeds/:id/refresh", FeedController, :refresh diff --git a/lib/frenzy_web/templates/group/read.html.eex b/lib/frenzy_web/templates/group/read.html.eex new file mode 100644 index 0000000..9f3d89e --- /dev/null +++ b/lib/frenzy_web/templates/group/read.html.eex @@ -0,0 +1,41 @@ +
+ Newer +
+<% end %> + ++ + <%= item.title || "(Untitled)" %> + + | ++ + <%= if item.feed.favicon do %> + + <% end %> + <%= item.feed.title || "(Untitled)" %> + + | ++ <%= if item.date do %> + <% {:ok, date} = Timex.format(item.date, "{YYYY}-{0M}-{0D} {0h12}:{m} {AM}") %> + <%= date %> + <% end %> + | +
+ Older +
+<% end %> diff --git a/lib/frenzy_web/templates/group/show.html.eex b/lib/frenzy_web/templates/group/show.html.eex index 5769d09..d356739 100644 --- a/lib/frenzy_web/templates/group/show.html.eex +++ b/lib/frenzy_web/templates/group/show.html.eex @@ -18,7 +18,7 @@ <% end %> -Read Articles +Read Articles