pass_manager/src/markups.rs

34 lines
1.1 KiB
Rust
Raw Normal View History

use crate::prelude::*;
2023-07-25 14:44:12 +00:00
use base64::{engine::general_purpose::STANDARD as B64_ENGINE, Engine as _};
use futures::future;
use itertools::Itertools;
use sha2::{Digest, Sha256};
use teloxide::types::{InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, KeyboardMarkup};
2023-05-04 18:15:41 +00:00
2023-05-09 17:27:58 +00:00
/// Creates a markup of all user's account names
2023-05-04 18:15:41 +00:00
#[inline]
pub async fn account_markup(
user_id: u64,
db: &DatabaseConnection,
) -> crate::Result<KeyboardMarkup> {
let account_names: Vec<Vec<KeyboardButton>> = Account::get_names(user_id, db)
2023-05-04 18:15:41 +00:00
.await?
.map_ok(KeyboardButton::new)
2023-05-04 18:15:41 +00:00
.try_chunks(3)
2023-05-27 18:56:58 +00:00
.map_err(|err| err.1)
2023-05-04 18:15:41 +00:00
.try_collect()
.await?;
let markup = KeyboardMarkup::new(account_names)
.resize_keyboard(true)
.one_time_keyboard(true);
Ok(markup)
}
2023-05-09 17:27:58 +00:00
/// Creates a markup with a "Delete message" button.
/// This markup should be added for all messages that won't be deleted afterwards
#[inline]
pub fn deletion_markup() -> InlineKeyboardMarkup {
let button = InlineKeyboardButton::callback("Delete message", "delete_message");
InlineKeyboardMarkup::new([[button]])
}