diff --git a/lib/scrivener/html/seo.ex b/lib/scrivener/html/seo.ex
index 6b0c689..b1b1491 100644
--- a/lib/scrivener/html/seo.ex
+++ b/lib/scrivener/html/seo.ex
@@ -43,18 +43,21 @@ defmodule Scrivener.HTML.SEO do
iex> Phoenix.HTML.safe_to_string(Scrivener.HTML.SEO.header_links(%Scrivener.Page{total_pages: 10, page_number: 3}))
"\n"
"""
- def header_links(conn, %Page{page_number: 1} = paginator, args, opts) do
- next_header_link(conn, paginator, args, opts)
- end
-
- def header_links(conn, %Page{total_pages: page, page_number: page} = paginator, args, opts) do
- prev_header_link(conn, paginator, args, opts)
- end
-
- def header_links(conn, paginator, args, opts) do
- {:safe, prev} = prev_header_link(conn, paginator, args, opts)
- {:safe, next} = next_header_link(conn, paginator, args, opts)
- {:safe, [prev, "\n", next]}
+ def header_links(
+ conn,
+ %Page{total_pages: total_pages, page_number: page_number} = paginator,
+ args,
+ opts
+ ) do
+ prev = if page_number > 1, do: prev_header_link(conn, paginator, args, opts)
+ next = if total_pages > page_number, do: next_header_link(conn, paginator, args, opts)
+
+ if prev && next do
+ [{:safe, prev}, {:safe, next}] = [prev, next]
+ {:safe, [prev, "\n", next]}
+ else
+ prev || next
+ end
end
def header_links(%Scrivener.Page{} = paginator), do: header_links(nil, paginator, [], [])
diff --git a/test/scrivener/html/seo_test.exs b/test/scrivener/html/seo_test.exs
index b5cbad7..9522531 100644
--- a/test/scrivener/html/seo_test.exs
+++ b/test/scrivener/html/seo_test.exs
@@ -27,7 +27,11 @@ defmodule Scrivener.HTML.SEOTest do
end
describe "#header_links" do
- test "on the first page" do
+ test "on the first page with only one total pages" do
+ refute header_links(%Page{total_pages: 1, page_number: 1})
+ end
+
+ test "on the first page with more than one total pages" do
assert header_links(%Page{total_pages: 10, page_number: 1}) ==
{:safe,
[