...
This commit is contained in:
@ -272,6 +272,34 @@ INSERT IGNORE INTO roles (role, name, guild_id) VALUES (?, \"Role\", (SELECT id
|
||||
let reminders =
|
||||
Reminder::from_guild(ctx, component.guild_id, component.user.id).await;
|
||||
|
||||
if reminders.is_empty() {
|
||||
let mut embed = CreateEmbed::default();
|
||||
embed.title("Delete Reminders").description("No Reminders").color(*THEME_COLOR);
|
||||
|
||||
component
|
||||
.create_interaction_response(&ctx, |r| {
|
||||
r.kind(InteractionResponseType::UpdateMessage)
|
||||
.interaction_response_data(|response| {
|
||||
response.embeds(vec![embed]).components(|comp| comp)
|
||||
})
|
||||
})
|
||||
.await;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
let pages = reminders
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(count, reminder)| reminder.display_del(count, &selector.timezone))
|
||||
.fold(0, |t, r| t + r.len())
|
||||
.div_ceil(EMBED_DESCRIPTION_MAX_LENGTH);
|
||||
|
||||
let mut page = selector.page;
|
||||
if page >= pages {
|
||||
page = pages - 1;
|
||||
}
|
||||
|
||||
let mut char_count = 0;
|
||||
let mut skip_char_count = 0;
|
||||
let mut first_num = 0;
|
||||
@ -286,7 +314,7 @@ INSERT IGNORE INTO roles (role, name, guild_id) VALUES (?, \"Role\", (SELECT id
|
||||
first_num += 1;
|
||||
skip_char_count += p.len();
|
||||
|
||||
skip_char_count < EMBED_DESCRIPTION_MAX_LENGTH * selector.page
|
||||
skip_char_count < EMBED_DESCRIPTION_MAX_LENGTH * page
|
||||
})
|
||||
.take_while(|(_, p)| {
|
||||
char_count += p.len();
|
||||
@ -297,17 +325,10 @@ INSERT IGNORE INTO roles (role, name, guild_id) VALUES (?, \"Role\", (SELECT id
|
||||
|
||||
let display = display_vec.join("\n");
|
||||
|
||||
let pages = reminders
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(count, reminder)| reminder.display_del(count, &selector.timezone))
|
||||
.fold(0, |t, r| t + r.len())
|
||||
.div_ceil(EMBED_DESCRIPTION_MAX_LENGTH);
|
||||
|
||||
let pager = DelPager::new(selector.timezone);
|
||||
|
||||
let del_selector = ComponentDataModel::DelSelector(DelSelector {
|
||||
page: selector.page,
|
||||
page,
|
||||
timezone: selector.timezone,
|
||||
});
|
||||
|
||||
@ -315,7 +336,7 @@ INSERT IGNORE INTO roles (role, name, guild_id) VALUES (?, \"Role\", (SELECT id
|
||||
embed
|
||||
.title("Delete Reminders")
|
||||
.description(display)
|
||||
.footer(|f| f.text(format!("Page {} of {}", selector.page + 1, pages)))
|
||||
.footer(|f| f.text(format!("Page {} of {}", page + 1, pages)))
|
||||
.color(*THEME_COLOR);
|
||||
|
||||
component
|
||||
@ -333,7 +354,7 @@ INSERT IGNORE INTO roles (role, name, guild_id) VALUES (?, \"Role\", (SELECT id
|
||||
shown_reminders.iter().enumerate()
|
||||
{
|
||||
opt.create_option(|o| {
|
||||
o.label(count + 1)
|
||||
o.label(count + first_num)
|
||||
.value(reminder.id)
|
||||
.description({
|
||||
let c =
|
||||
|
@ -16,8 +16,9 @@ pub trait Pager {
|
||||
enum PageAction {
|
||||
First = 0,
|
||||
Previous = 1,
|
||||
Next = 2,
|
||||
Last = 3,
|
||||
Refresh = 2,
|
||||
Next = 3,
|
||||
Last = 4,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
@ -33,6 +34,7 @@ impl Pager for LookPager {
|
||||
match self.action {
|
||||
PageAction::First => 0,
|
||||
PageAction::Previous => 0.max(self.page - 1),
|
||||
PageAction::Refresh => self.page,
|
||||
PageAction::Next => (max_pages - 1).min(self.page + 1),
|
||||
PageAction::Last => max_pages - 1,
|
||||
}
|
||||
@ -41,7 +43,7 @@ impl Pager for LookPager {
|
||||
fn create_button_row(&self, max_pages: usize, comp: &mut CreateComponents) {
|
||||
let next_page = self.next_page(max_pages);
|
||||
|
||||
let (page_first, page_prev, page_next, page_last) =
|
||||
let (page_first, page_prev, page_refresh, page_next, page_last) =
|
||||
LookPager::buttons(self.flags, next_page, self.timezone);
|
||||
|
||||
comp.create_action_row(|row| {
|
||||
@ -57,6 +59,9 @@ impl Pager for LookPager {
|
||||
.custom_id(page_prev.to_custom_id())
|
||||
.disabled(next_page == 0)
|
||||
})
|
||||
.create_button(|b| {
|
||||
b.label("🔁").style(ButtonStyle::Secondary).custom_id(page_refresh.to_custom_id())
|
||||
})
|
||||
.create_button(|b| {
|
||||
b.label("▶️")
|
||||
.style(ButtonStyle::Secondary)
|
||||
@ -82,7 +87,13 @@ impl LookPager {
|
||||
flags: LookFlags,
|
||||
page: usize,
|
||||
timezone: Tz,
|
||||
) -> (ComponentDataModel, ComponentDataModel, ComponentDataModel, ComponentDataModel) {
|
||||
) -> (
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
) {
|
||||
(
|
||||
ComponentDataModel::LookPager(LookPager {
|
||||
flags,
|
||||
@ -96,6 +107,12 @@ impl LookPager {
|
||||
action: PageAction::Previous,
|
||||
timezone,
|
||||
}),
|
||||
ComponentDataModel::LookPager(LookPager {
|
||||
flags,
|
||||
page,
|
||||
action: PageAction::Refresh,
|
||||
timezone,
|
||||
}),
|
||||
ComponentDataModel::LookPager(LookPager {
|
||||
flags,
|
||||
page,
|
||||
@ -124,6 +141,7 @@ impl Pager for DelPager {
|
||||
match self.action {
|
||||
PageAction::First => 0,
|
||||
PageAction::Previous => 0.max(self.page - 1),
|
||||
PageAction::Refresh => self.page,
|
||||
PageAction::Next => (max_pages - 1).min(self.page + 1),
|
||||
PageAction::Last => max_pages - 1,
|
||||
}
|
||||
@ -132,7 +150,7 @@ impl Pager for DelPager {
|
||||
fn create_button_row(&self, max_pages: usize, comp: &mut CreateComponents) {
|
||||
let next_page = self.next_page(max_pages);
|
||||
|
||||
let (page_first, page_prev, page_next, page_last) =
|
||||
let (page_first, page_prev, page_refresh, page_next, page_last) =
|
||||
DelPager::buttons(next_page, self.timezone);
|
||||
|
||||
comp.create_action_row(|row| {
|
||||
@ -148,6 +166,9 @@ impl Pager for DelPager {
|
||||
.custom_id(page_prev.to_custom_id())
|
||||
.disabled(next_page == 0)
|
||||
})
|
||||
.create_button(|b| {
|
||||
b.label("🔁").style(ButtonStyle::Secondary).custom_id(page_refresh.to_custom_id())
|
||||
})
|
||||
.create_button(|b| {
|
||||
b.label("▶️")
|
||||
.style(ButtonStyle::Secondary)
|
||||
@ -172,10 +193,17 @@ impl DelPager {
|
||||
pub fn buttons(
|
||||
page: usize,
|
||||
timezone: Tz,
|
||||
) -> (ComponentDataModel, ComponentDataModel, ComponentDataModel, ComponentDataModel) {
|
||||
) -> (
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
ComponentDataModel,
|
||||
) {
|
||||
(
|
||||
ComponentDataModel::DelPager(DelPager { page, action: PageAction::First, timezone }),
|
||||
ComponentDataModel::DelPager(DelPager { page, action: PageAction::Previous, timezone }),
|
||||
ComponentDataModel::DelPager(DelPager { page, action: PageAction::Refresh, timezone }),
|
||||
ComponentDataModel::DelPager(DelPager { page, action: PageAction::Next, timezone }),
|
||||
ComponentDataModel::DelPager(DelPager { page, action: PageAction::Last, timezone }),
|
||||
)
|
||||
|
Reference in New Issue
Block a user