Added message deletion
This commit is contained in:
parent
e129934aac
commit
89d3ea1bf7
@ -1,7 +1,7 @@
|
|||||||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
|
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
|
||||||
|
|
||||||
use chacha20poly1305::{aead::Aead, AeadCore, ChaCha20Poly1305, KeyInit};
|
use chacha20poly1305::{aead::Aead, AeadCore, ChaCha20Poly1305, KeyInit};
|
||||||
use futures::{Stream, StreamExt};
|
use futures::{Stream, TryStreamExt};
|
||||||
use pbkdf2::pbkdf2_hmac_array;
|
use pbkdf2::pbkdf2_hmac_array;
|
||||||
use rand::{rngs::OsRng, RngCore};
|
use rand::{rngs::OsRng, RngCore};
|
||||||
use sea_orm::{prelude::*, ActiveValue::Set, QuerySelect};
|
use sea_orm::{prelude::*, ActiveValue::Set, QuerySelect};
|
||||||
@ -99,8 +99,7 @@ impl Entity {
|
|||||||
.filter(Column::UserId.eq(user_id))
|
.filter(Column::UserId.eq(user_id))
|
||||||
.into_tuple()
|
.into_tuple()
|
||||||
.stream(db)
|
.stream(db)
|
||||||
.await?
|
.await?;
|
||||||
.map(|item| item.map_err(Into::into));
|
Ok(result.map_err(Into::into))
|
||||||
Ok(result)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,13 +9,14 @@ async fn get_master_pass(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
db: DatabaseConnection,
|
db: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
login: String,
|
login: String,
|
||||||
password: String,
|
password: String,
|
||||||
master_pass: String,
|
master_pass: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
let user_id = msg.from().unwrap().id.0;
|
let user_id = msg.from().unwrap().id.0;
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let account = spawn_blocking(move || {
|
let account = spawn_blocking(move || {
|
||||||
account::ActiveModel::from_unencrypted(user_id, name, &login, &password, &master_pass)
|
account::ActiveModel::from_unencrypted(user_id, name, &login, &password, &master_pass)
|
||||||
@ -31,17 +32,28 @@ async fn get_password(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
_: DatabaseConnection,
|
_: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
login: String,
|
login: String,
|
||||||
password: String,
|
password: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send master password")
|
bot.send_message(msg.chat.id, "Send master password")
|
||||||
.await?;
|
.await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetMasterPass(package_handler(
|
.update(State::GetMasterPass(package_handler(
|
||||||
move |bot, msg, db, dialogue, master_pass| {
|
move |bot, msg, db, dialogue, master_pass| {
|
||||||
get_master_pass(bot, msg, db, dialogue, name, login, password, master_pass)
|
get_master_pass(
|
||||||
|
bot,
|
||||||
|
msg,
|
||||||
|
db,
|
||||||
|
dialogue,
|
||||||
|
previous,
|
||||||
|
name,
|
||||||
|
login,
|
||||||
|
password,
|
||||||
|
master_pass,
|
||||||
|
)
|
||||||
},
|
},
|
||||||
)))
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
@ -53,15 +65,16 @@ async fn get_login(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
_: DatabaseConnection,
|
_: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
login: String,
|
login: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send password").await?;
|
bot.send_message(msg.chat.id, "Send password").await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetPassword(package_handler(
|
.update(State::GetPassword(package_handler(
|
||||||
move |bot, msg, db, dialogue, password| {
|
move |bot, msg, db, dialogue, password| {
|
||||||
get_password(bot, msg, db, dialogue, name, login, password)
|
get_password(bot, msg, db, dialogue, previous, name, login, password)
|
||||||
},
|
},
|
||||||
)))
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
@ -73,13 +86,16 @@ async fn get_account_name(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
_: DatabaseConnection,
|
_: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send login").await?;
|
bot.send_message(msg.chat.id, "Send login").await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetLogin(package_handler(
|
.update(State::GetLogin(package_handler(
|
||||||
move |bot, msg, db, dialogue, login| get_login(bot, msg, db, dialogue, name, login),
|
move |bot, msg, db, dialogue, login| {
|
||||||
|
get_login(bot, msg, db, dialogue, previous, name, login)
|
||||||
|
},
|
||||||
)))
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -88,12 +104,15 @@ async fn get_account_name(
|
|||||||
pub async fn add_account(
|
pub async fn add_account(
|
||||||
bot: Throttle<Bot>,
|
bot: Throttle<Bot>,
|
||||||
msg: Message,
|
msg: Message,
|
||||||
_: DatabaseConnection,
|
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
bot.send_message(msg.chat.id, "Send account name").await?;
|
let previous = bot.send_message(msg.chat.id, "Send account name").await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetAccountName(package_handler(get_account_name)))
|
.update(State::GetAccountName(package_handler(
|
||||||
|
move |bot, msg, db, dialogue, name| {
|
||||||
|
get_account_name(bot, msg, db, dialogue, previous, name)
|
||||||
|
},
|
||||||
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,11 @@ async fn get_master_pass(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
db: DatabaseConnection,
|
db: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
master_pass: String,
|
master_pass: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let user_id = msg.from().unwrap().id.0;
|
let user_id = msg.from().unwrap().id.0;
|
||||||
let account = Account::find()
|
let account = Account::find()
|
||||||
@ -40,15 +41,17 @@ async fn get_account_name(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
_: DatabaseConnection,
|
_: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
name: String,
|
name: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send master password")
|
let previous = bot
|
||||||
|
.send_message(msg.chat.id, "Send master password")
|
||||||
.await?;
|
.await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetMasterPass(package_handler(
|
.update(State::GetMasterPass(package_handler(
|
||||||
move |bot, msg, db, dialogue, master_pass| {
|
move |bot, msg, db, dialogue, master_pass| {
|
||||||
get_master_pass(bot, msg, db, dialogue, name, master_pass)
|
get_master_pass(bot, msg, db, dialogue, previous, name, master_pass)
|
||||||
},
|
},
|
||||||
)))
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
@ -68,11 +71,16 @@ pub async fn get_account(
|
|||||||
.try_collect()
|
.try_collect()
|
||||||
.await?;
|
.await?;
|
||||||
let markup = KeyboardMarkup::new(account_names).resize_keyboard(true);
|
let markup = KeyboardMarkup::new(account_names).resize_keyboard(true);
|
||||||
bot.send_message(msg.chat.id, "Send account name")
|
let previous = bot
|
||||||
|
.send_message(msg.chat.id, "Send account name")
|
||||||
.reply_markup(markup)
|
.reply_markup(markup)
|
||||||
.await?;
|
.await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetAccountName(package_handler(get_account_name)))
|
.update(State::GetAccountName(package_handler(
|
||||||
|
move |bot, msg, db, dialogue, name| {
|
||||||
|
get_account_name(bot, msg, db, dialogue, previous, name)
|
||||||
|
},
|
||||||
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,10 @@ async fn get_master_pass(
|
|||||||
msg: Message,
|
msg: Message,
|
||||||
db: DatabaseConnection,
|
db: DatabaseConnection,
|
||||||
dialogue: MainDialogue,
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
master_password: String,
|
master_password: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let user_id = msg.from().unwrap().id.0;
|
let user_id = msg.from().unwrap().id.0;
|
||||||
let model = task::spawn_blocking(move || {
|
let model = task::spawn_blocking(move || {
|
||||||
@ -36,10 +38,15 @@ pub async fn set_master_pass(
|
|||||||
.await?;
|
.await?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
bot.send_message(msg.chat.id, "Send new master password")
|
let previous = bot
|
||||||
|
.send_message(msg.chat.id, "Send new master password")
|
||||||
.await?;
|
.await?;
|
||||||
dialogue
|
dialogue
|
||||||
.update(State::GetPassword(package_handler(get_master_pass)))
|
.update(State::GetPassword(package_handler(
|
||||||
|
move |bot, msg, db, dialogue, master_pass| {
|
||||||
|
get_master_pass(bot, msg, db, dialogue, previous, master_pass)
|
||||||
|
},
|
||||||
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ pub fn get_dispatcher(
|
|||||||
.branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass));
|
.branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass));
|
||||||
|
|
||||||
let message_handler = Update::filter_message()
|
let message_handler = Update::filter_message()
|
||||||
|
.map_async(utils::delete_message)
|
||||||
.enter_dialogue::<Update, InMemStorage<State>, State>()
|
.enter_dialogue::<Update, InMemStorage<State>, State>()
|
||||||
.branch(command_handler)
|
.branch(command_handler)
|
||||||
.branch(case![State::GetAccountName(next)].endpoint(state::get_account_name))
|
.branch(case![State::GetAccountName(next)].endpoint(state::get_account_name))
|
||||||
|
@ -17,3 +17,7 @@ where
|
|||||||
move |bot, msg, db, dialogue, val| Box::pin(f(bot, msg, db, dialogue, val)),
|
move |bot, msg, db, dialogue, val| Box::pin(f(bot, msg, db, dialogue, val)),
|
||||||
))))
|
))))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn delete_message(bot: Throttle<Bot>, msg: Message) {
|
||||||
|
let _ = bot.delete_message(msg.chat.id, msg.id).await;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user