HTML: Use the new pagination component for channel pages

This commit is contained in:
Samantaz Fox 2023-04-21 00:28:11 +02:00
parent efaf7cb09c
commit 7bd6d0ac49
No known key found for this signature in database
GPG Key ID: F42821059186176E
5 changed files with 20 additions and 31 deletions

View File

@ -163,9 +163,9 @@ module Invidious::Routes::Playlists
end end
begin begin
videos = get_playlist_videos(playlist, offset: (page - 1) * 100) items = get_playlist_videos(playlist, offset: (page - 1) * 100)
rescue ex rescue ex
videos = [] of PlaylistVideo items = [] of PlaylistVideo
end end
csrf_token = generate_response(sid, {":edit_playlist"}, HMAC_KEY) csrf_token = generate_response(sid, {":edit_playlist"}, HMAC_KEY)
@ -174,7 +174,7 @@ module Invidious::Routes::Playlists
page_nav_html = Frontend::Pagination.nav_numeric(locale, page_nav_html = Frontend::Pagination.nav_numeric(locale,
base_url: "/playlist?list=#{playlist.id}", base_url: "/playlist?list=#{playlist.id}",
current_page: page, current_page: page,
show_next: (videos.size == 100) show_next: (items.size == 100)
) )
templated "edit_playlist" templated "edit_playlist"
@ -254,9 +254,9 @@ module Invidious::Routes::Playlists
begin begin
query = Invidious::Search::Query.new(env.params.query, :playlist, region) query = Invidious::Search::Query.new(env.params.query, :playlist, region)
videos = query.process.select(SearchVideo).map(&.as(SearchVideo)) items = query.process.select(SearchVideo).map(&.as(SearchVideo))
rescue ex rescue ex
videos = [] of SearchVideo items = [] of SearchVideo
end end
# Pagination # Pagination
@ -264,7 +264,7 @@ module Invidious::Routes::Playlists
page_nav_html = Frontend::Pagination.nav_numeric(locale, page_nav_html = Frontend::Pagination.nav_numeric(locale,
base_url: "/add_playlist_items?list=#{playlist.id}&q=#{query_encoded}", base_url: "/add_playlist_items?list=#{playlist.id}&q=#{query_encoded}",
current_page: page, current_page: page,
show_next: (videos.size >= 20) show_next: (items.size >= 20)
) )
env.set "add_playlist_items", plid env.set "add_playlist_items", plid
@ -433,7 +433,7 @@ module Invidious::Routes::Playlists
end end
begin begin
videos = get_playlist_videos(playlist, offset: (page - 1) * 200) items = get_playlist_videos(playlist, offset: (page - 1) * 200)
rescue ex rescue ex
return error_template(500, "Error encountered while retrieving playlist videos.<br>#{ex.message}") return error_template(500, "Error encountered while retrieving playlist videos.<br>#{ex.message}")
end end

View File

@ -52,7 +52,7 @@ module Invidious::Routes::Search
user = env.get? "user" user = env.get? "user"
begin begin
videos = query.process items = query.process
rescue ex : ChannelSearchException rescue ex : ChannelSearchException
return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.") return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.")
rescue ex rescue ex
@ -65,7 +65,7 @@ module Invidious::Routes::Search
page_nav_html = Frontend::Pagination.nav_numeric(locale, page_nav_html = Frontend::Pagination.nav_numeric(locale,
base_url: "/search?#{query.to_http_params}", base_url: "/search?#{query.to_http_params}",
current_page: query.page, current_page: query.page,
show_next: (videos.size >= 20) show_next: (items.size >= 20)
) )
if query.type == Invidious::Search::Query::Type::Channel if query.type == Invidious::Search::Query::Type::Channel
@ -95,7 +95,7 @@ module Invidious::Routes::Search
end end
begin begin
videos = Invidious::Hashtag.fetch(hashtag, page) items = Invidious::Hashtag.fetch(hashtag, page)
rescue ex rescue ex
return error_template(500, ex) return error_template(500, ex)
end end
@ -105,7 +105,7 @@ module Invidious::Routes::Search
page_nav_html = Frontend::Pagination.nav_numeric(locale, page_nav_html = Frontend::Pagination.nav_numeric(locale,
base_url: "/hashtag/#{hashtag_encoded}", base_url: "/hashtag/#{hashtag_encoded}",
current_page: page, current_page: page,
show_next: (videos.size >= 60) show_next: (items.size >= 60)
) )
templated "hashtag" templated "hashtag"

View File

@ -15,7 +15,12 @@
youtube_url = "https://www.youtube.com#{relative_url}" youtube_url = "https://www.youtube.com#{relative_url}"
redirect_url = Invidious::Frontend::Misc.redirect_url(env) redirect_url = Invidious::Frontend::Misc.redirect_url(env)
-%>
page_nav_html = IV::Frontend::Pagination.nav_ctoken(locale,
base_url: relative_url,
ctoken: next_continuation
)
%>
<% content_for "header" do %> <% content_for "header" do %>
<%- if selected_tab.videos? -%> <%- if selected_tab.videos? -%>
@ -43,21 +48,5 @@
<hr> <hr>
</div> </div>
<div class="pure-g">
<% items.each do |item| %>
<%= rendered "components/item" %>
<% end %>
</div>
<script src="/js/watched_indicator.js"></script> <%= rendered "components/items_paginated" %>
<div class="pure-g h-box">
<div class="pure-u-1 pure-u-md-4-5"></div>
<div class="pure-u-1 pure-u-lg-1-5" style="text-align:right">
<% if next_continuation %>
<a href="<%= relative_url %>?continuation=<%= next_continuation %><% if sort_options.any? sort_by %>&sort_by=<%= sort_by %><% end %>">
<%= translate(locale, "Next page") %>
</a>
<% end %>
</div>
</div>

View File

@ -1,7 +1,7 @@
<%= page_nav_html %> <%= page_nav_html %>
<div class="pure-g"> <div class="pure-g">
<%- videos.each do |item| -%> <%- items.each do |item| -%>
<%= rendered "components/item" %> <%= rendered "components/item" %>
<%- end -%> <%- end -%>
</div> </div>

View File

@ -8,7 +8,7 @@
<hr/> <hr/>
<%- if videos.empty? -%> <%- if items.empty? -%>
<div class="h-box no-results-error"> <div class="h-box no-results-error">
<div> <div>
<%= translate(locale, "search_message_no_results") %><br/><br/> <%= translate(locale, "search_message_no_results") %><br/><br/>