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, msg: Message, db: DatabaseConnection, dialogue: MainDialogue, previous: Message, name: 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, 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, _| { get_master_pass(bot, msg, db, dialogue, previous, name) }, ))) .await?; Ok(()) } pub async fn delete( bot: Throttle, 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(()) }