diff --git a/lib/philomena_web/image_navigator.ex b/lib/philomena_web/image_navigator.ex index a557ff3a..fce68944 100644 --- a/lib/philomena_web/image_navigator.ex +++ b/lib/philomena_web/image_navigator.ex @@ -9,6 +9,8 @@ defmodule PhilomenaWeb.ImageNavigator do } def find_consecutive(conn, image, compiled_query, compiled_filter) do + conn = update_in(conn.params, &Map.put_new(&1, "sf", "id")) + %{query: compiled_query, sorts: sorts} = ImageSorter.parse_sort(conn.params, compiled_query) sorts = diff --git a/lib/philomena_web/image_sorter.ex b/lib/philomena_web/image_sorter.ex index 83c78b80..ed422288 100644 --- a/lib/philomena_web/image_sorter.ex +++ b/lib/philomena_web/image_sorter.ex @@ -1,5 +1,6 @@ defmodule PhilomenaWeb.ImageSorter do @allowed_fields ~W( + id updated_at first_seen_at aspect_ratio @@ -26,6 +27,10 @@ defmodule PhilomenaWeb.ImageSorter do defp parse_sd(%{"sd" => sd}) when sd in ~W(asc desc), do: sd defp parse_sd(_params), do: "desc" + defp parse_sf(%{"sf" => sf}, sd, query) when sf == "id" do + %{query: query, sorts: [%{"id" => sd}]} + end + defp parse_sf(%{"sf" => sf}, sd, query) when sf in @allowed_fields do %{query: query, sorts: [%{sf => sd}, %{"id" => sd}]} end