diff --git a/lib/frenzy_web/controllers/feed_controller.ex b/lib/frenzy_web/controllers/feed_controller.ex
index c11818e..db4f737 100644
--- a/lib/frenzy_web/controllers/feed_controller.ex
+++ b/lib/frenzy_web/controllers/feed_controller.ex
@@ -38,9 +38,30 @@ defmodule FrenzyWeb.FeedController do
DateTime.compare(a, b) == :gt
end)
+ first_item = List.first(items)
+ last_item = List.last(items)
+
+ prev_page_path =
+ if !is_nil(first_item) &&
+ Repo.exists?(from i in Item, where: i.date > ^first_item.date and i.feed_id == ^id) do
+ current_path(conn, %{after: first_item.id})
+ else
+ nil
+ end
+
+ next_page_path =
+ if !is_nil(last_item) &&
+ Repo.exists?(from i in Item, where: i.date < ^last_item.date and i.feed_id == ^id) do
+ current_path(conn, %{before: last_item.id})
+ else
+ nil
+ end
+
render(conn, "show.html", %{
feed: feed,
- items: items
+ items: items,
+ next_page_path: next_page_path,
+ prev_page_path: prev_page_path
})
end
diff --git a/lib/frenzy_web/controllers/group_controller.ex b/lib/frenzy_web/controllers/group_controller.ex
index 4b08f49..1570338 100644
--- a/lib/frenzy_web/controllers/group_controller.ex
+++ b/lib/frenzy_web/controllers/group_controller.ex
@@ -112,9 +112,34 @@ defmodule FrenzyWeb.GroupController do
DateTime.compare(a, b) == :gt
end)
+ first_item = List.first(items)
+ last_item = List.last(items)
+
+ prev_page_path =
+ if !is_nil(first_item) &&
+ Repo.exists?(
+ from i in Item, where: i.date > ^first_item.date and i.feed_id in ^feed_ids
+ ) do
+ current_path(conn, %{after: first_item.id})
+ else
+ nil
+ end
+
+ next_page_path =
+ if !is_nil(last_item) &&
+ Repo.exists?(
+ from i in Item, where: i.date < ^last_item.date and i.feed_id in ^feed_ids
+ ) do
+ current_path(conn, %{before: last_item.id})
+ else
+ nil
+ end
+
render(conn, "read.html", %{
group: group,
- items: items
+ items: items,
+ prev_page_path: prev_page_path,
+ next_page_path: next_page_path
})
end
end
diff --git a/lib/frenzy_web/templates/feed/show.html.eex b/lib/frenzy_web/templates/feed/show.html.eex
index 05e47aa..659a9e1 100644
--- a/lib/frenzy_web/templates/feed/show.html.eex
+++ b/lib/frenzy_web/templates/feed/show.html.eex
@@ -17,9 +17,9 @@
Items
-<%= unless is_nil(prev_page_path(@conn, @items)) do %>
+<%= unless is_nil(@prev_page_path) do %>
-
+
<% end %>
@@ -41,8 +41,8 @@
-<%= unless is_nil(next_page_path(@conn, @items)) do %>
+<%= unless is_nil(@next_page_path) do %>
-
+
<% end %>
diff --git a/lib/frenzy_web/templates/group/read.html.eex b/lib/frenzy_web/templates/group/read.html.eex
index 9f3d89e..f3297c5 100644
--- a/lib/frenzy_web/templates/group/read.html.eex
+++ b/lib/frenzy_web/templates/group/read.html.eex
@@ -1,8 +1,8 @@
<%= @group.title %>
-<%= unless is_nil(prev_page_path(@conn, @items)) do %>
+<%= unless is_nil(@prev_page_path) do %>
-
+
<% end %>
@@ -34,8 +34,8 @@
-<%= unless is_nil(next_page_path(@conn, @items)) do %>
+<%= unless is_nil(@next_page_path) do %>
-
+
<% end %>
diff --git a/lib/frenzy_web/views/feed_view.ex b/lib/frenzy_web/views/feed_view.ex
index 15de7f9..988654d 100644
--- a/lib/frenzy_web/views/feed_view.ex
+++ b/lib/frenzy_web/views/feed_view.ex
@@ -1,32 +1,3 @@
defmodule FrenzyWeb.FeedView do
use FrenzyWeb, :view
- alias Frenzy.{Repo, Item}
- import Ecto.Query
-
- @spec next_page_path(Plug.Conn.t(), [Frenzy.Item.t()]) :: String.t() | nil
- def next_page_path(_conn, []), do: nil
-
- def next_page_path(conn, items) do
- %Item{id: id, date: date} = List.last(items)
- has_older = Repo.exists?(from i in Item, where: i.date < ^date)
-
- if has_older do
- Phoenix.Controller.current_path(conn, %{before: id})
- else
- nil
- end
- end
-
- @spec prev_page_path(Plug.Conn.t(), [Frenzy.Item.t()]) :: String.t() | nil
- def prev_page_path(_conn, []), do: nil
-
- def prev_page_path(conn, [%Item{id: id, date: date} | _]) do
- has_newer = Repo.exists?(from i in Item, where: i.date > ^date)
-
- if has_newer do
- Phoenix.Controller.current_path(conn, %{after: id})
- else
- nil
- end
- end
end
diff --git a/lib/frenzy_web/views/group_view.ex b/lib/frenzy_web/views/group_view.ex
index 80f33ab..11d455f 100644
--- a/lib/frenzy_web/views/group_view.ex
+++ b/lib/frenzy_web/views/group_view.ex
@@ -1,6 +1,3 @@
defmodule FrenzyWeb.GroupView do
use FrenzyWeb, :view
-
- defdelegate next_page_path(conn, items), to: FrenzyWeb.FeedView
- defdelegate prev_page_path(conn, items), to: FrenzyWeb.FeedView
end