Added delete command and fixed memory deletion for /add_account
This commit is contained in:
parent
332356a95b
commit
a2fae8bb89
@ -38,7 +38,8 @@ async fn get_password(
|
|||||||
password: String,
|
password: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(previous.chat.id, previous.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(
|
||||||
@ -70,7 +71,7 @@ async fn get_login(
|
|||||||
login: String,
|
login: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send password").await?;
|
let previous = 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| {
|
||||||
@ -90,7 +91,7 @@ async fn get_account_name(
|
|||||||
name: String,
|
name: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
bot.send_message(msg.chat.id, "Send login").await?;
|
let previous = 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| {
|
move |bot, msg, db, dialogue, login| {
|
||||||
|
67
src/handlers/commands/delete.rs
Normal file
67
src/handlers/commands/delete.rs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
use crate::{
|
||||||
|
entity::prelude::Account,
|
||||||
|
handlers::{markups, utils::package_handler, MainDialogue, State},
|
||||||
|
};
|
||||||
|
use sea_orm::prelude::*;
|
||||||
|
use teloxide::{adaptors::Throttle, prelude::*};
|
||||||
|
|
||||||
|
async fn get_master_pass(
|
||||||
|
bot: Throttle<Bot>,
|
||||||
|
msg: Message,
|
||||||
|
db: DatabaseConnection,
|
||||||
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
|
name: String,
|
||||||
|
_: String,
|
||||||
|
) -> crate::Result<()> {
|
||||||
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
|
dialogue.exit().await?;
|
||||||
|
let user_id = msg.from().unwrap().id.0;
|
||||||
|
Account::delete_by_id((user_id, name)).exec(&db).await?;
|
||||||
|
bot.send_message(msg.chat.id, "The account is successfully deleted")
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn get_account_name(
|
||||||
|
bot: Throttle<Bot>,
|
||||||
|
msg: Message,
|
||||||
|
_: DatabaseConnection,
|
||||||
|
dialogue: MainDialogue,
|
||||||
|
previous: Message,
|
||||||
|
name: String,
|
||||||
|
) -> crate::Result<()> {
|
||||||
|
let _ = bot.delete_message(previous.chat.id, previous.id).await;
|
||||||
|
let previous = bot
|
||||||
|
.send_message(msg.chat.id, "Send master password. Once you send correct master password the account is unrecoverable")
|
||||||
|
.await?;
|
||||||
|
dialogue
|
||||||
|
.update(State::GetMasterPass(package_handler(
|
||||||
|
move |bot, msg, db, dialogue, master_pass| {
|
||||||
|
get_master_pass(bot, msg, db, dialogue, previous, name, master_pass)
|
||||||
|
},
|
||||||
|
)))
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn delete(
|
||||||
|
bot: Throttle<Bot>,
|
||||||
|
msg: Message,
|
||||||
|
dialogue: MainDialogue,
|
||||||
|
db: DatabaseConnection,
|
||||||
|
) -> crate::Result<()> {
|
||||||
|
let markup = markups::account_markup(msg.from().unwrap().id.0, &db).await?;
|
||||||
|
let previous = bot
|
||||||
|
.send_message(msg.chat.id, "Send account name")
|
||||||
|
.reply_markup(markup)
|
||||||
|
.await?;
|
||||||
|
dialogue
|
||||||
|
.update(State::GetAccountName(package_handler(
|
||||||
|
move |bot, msg, db, dialogue, name| {
|
||||||
|
get_account_name(bot, msg, db, dialogue, previous, name)
|
||||||
|
},
|
||||||
|
)))
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
mod add_account;
|
mod add_account;
|
||||||
mod default;
|
mod default;
|
||||||
|
mod delete;
|
||||||
mod get_account;
|
mod get_account;
|
||||||
mod get_accounts;
|
mod get_accounts;
|
||||||
mod help;
|
mod help;
|
||||||
@ -7,6 +8,7 @@ mod set_master_pass;
|
|||||||
|
|
||||||
pub use add_account::add_account;
|
pub use add_account::add_account;
|
||||||
pub use default::default;
|
pub use default::default;
|
||||||
|
pub use delete::delete;
|
||||||
pub use get_account::get_account;
|
pub use get_account::get_account;
|
||||||
pub use get_accounts::get_accounts;
|
pub use get_accounts::get_accounts;
|
||||||
pub use help::help;
|
pub use help::help;
|
||||||
|
@ -27,6 +27,8 @@ enum Command {
|
|||||||
GetAccounts,
|
GetAccounts,
|
||||||
#[command()]
|
#[command()]
|
||||||
SetMasterPass,
|
SetMasterPass,
|
||||||
|
#[command()]
|
||||||
|
Delete,
|
||||||
}
|
}
|
||||||
|
|
||||||
type MainDialogue = Dialogue<State, InMemStorage<State>>;
|
type MainDialogue = Dialogue<State, InMemStorage<State>>;
|
||||||
@ -70,7 +72,8 @@ pub fn get_dispatcher(
|
|||||||
.branch(case![Command::AddAccount].endpoint(commands::add_account))
|
.branch(case![Command::AddAccount].endpoint(commands::add_account))
|
||||||
.branch(case![Command::GetAccount].endpoint(commands::get_account))
|
.branch(case![Command::GetAccount].endpoint(commands::get_account))
|
||||||
.branch(case![Command::GetAccounts].endpoint(commands::get_accounts))
|
.branch(case![Command::GetAccounts].endpoint(commands::get_accounts))
|
||||||
.branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass));
|
.branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass))
|
||||||
|
.branch(case![Command::Delete].endpoint(commands::delete));
|
||||||
|
|
||||||
let message_handler = Update::filter_message()
|
let message_handler = Update::filter_message()
|
||||||
.map_async(utils::delete_message)
|
.map_async(utils::delete_message)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user