68 lines
1.5 KiB
Rust

use crate::{change_state, prelude::*};
#[inline]
async fn get_master_pass(
bot: Throttle<Bot>,
msg: Message,
db: DatabaseConnection,
dialogue: MainDialogue,
mut ids: MessageIds,
name: String,
_: String,
) -> crate::Result<()> {
dialogue.exit().await?;
let user_id = msg.from().ok_or(NoUserInfo)?.id.0;
Account::delete_by_id((user_id, name)).exec(&db).await?;
ids.alter_message(
&bot,
"The account is successfully deleted",
deletion_markup(),
None,
)
.await?;
Ok(())
}
pub async fn delete(
bot: Throttle<Bot>,
q: CallbackQuery,
db: DatabaseConnection,
dialogue: MainDialogue,
hash: super::NameHash,
) -> crate::Result<()> {
let mut msg: MessageIds = q.message.as_ref().unwrap().into();
let user_id = q.from.id.0;
let name = match name_from_hash(&db, user_id, &hash).await? {
Some(name) => name,
None => {
msg.alter_message(
&bot,
"Account wan't found. Select another one",
menu_markup("delete", user_id, &db).await?,
None,
)
.await?;
return Ok(());
}
};
let previous = bot.send_message(
msg.0,
"Send master password. Once you send correct master password the account is unrecoverable"
).await?;
bot.answer_callback_query(q.id).await?;
change_state!(
dialogue,
&previous,
(name),
State::GetMasterPass,
get_master_pass
);
Ok(())
}