From cad6cf22fa489fe5907ea26e50ec0026c6dba3ba Mon Sep 17 00:00:00 2001 From: Johannes Heuel Date: Wed, 19 Jun 2024 00:24:32 +0200 Subject: [PATCH] fix empty pages --- src/commands/queue.rs | 13 +++++++------ src/handler.rs | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/commands/queue.rs b/src/commands/queue.rs index a474c53..d071e72 100644 --- a/src/commands/queue.rs +++ b/src/commands/queue.rs @@ -59,9 +59,9 @@ pub(crate) async fn build_queue_embeds(queue: &[TrackHandle], page: usize) -> Ve } message.push('\n'); - let max_pages = queue.len() / TRACKS_PER_PAGE; - if max_pages > 0 { - message.push_str(&format!("page {}/{}", 1 + page, 1 + max_pages)); + let n_pages = (queue.len() + TRACKS_PER_PAGE - 1) / TRACKS_PER_PAGE; + if n_pages > 1 { + message.push_str(&format!("page {}/{}", 1 + page, n_pages)); } vec![EmbedBuilder::new() .description(&message) @@ -69,7 +69,7 @@ pub(crate) async fn build_queue_embeds(queue: &[TrackHandle], page: usize) -> Ve .build()] } -pub(crate) fn build_action_row(page: usize, max_pages: usize) -> Vec { +pub(crate) fn build_action_row(page: usize, n_pages: usize) -> Vec { vec![Component::ActionRow(ActionRow { components: vec![ Component::Button(Button { @@ -100,7 +100,7 @@ pub(crate) fn build_action_row(page: usize, max_pages: usize) -> Vec name: "➡️".to_string(), }), url: None, - disabled: page >= max_pages, + disabled: page >= n_pages - 1, }), ], })] @@ -146,7 +146,8 @@ pub(crate) async fn queue( } let embeds = build_queue_embeds(&queue, 0).await; - let action_row = build_action_row(0, queue.len() / TRACKS_PER_PAGE); + let n_pages = (queue.len() + TRACKS_PER_PAGE - 1) / TRACKS_PER_PAGE; + let action_row = build_action_row(0, n_pages); state .http diff --git a/src/handler.rs b/src/handler.rs index dc1aa2a..36a5af2 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -147,8 +147,8 @@ impl Handler { let call = call_lock.lock().await; queue = call.queue().current_queue(); } - let n_pages = queue.len() / TRACKS_PER_PAGE; - let page = page.min(n_pages).max(0); + let n_pages = (queue.len() + TRACKS_PER_PAGE - 1) / TRACKS_PER_PAGE; + let page = page.min(n_pages - 1).max(0); let embeds = build_queue_embeds(&queue, page).await; let action_row = build_action_row(page, n_pages);