68 lines
1.5 KiB
Rust
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(())
|
|
}
|