Updated altering accounts to handle errors
This commit is contained in:
@ -11,14 +11,16 @@ async fn update_account(
|
||||
field: AlterableField,
|
||||
field_value: String,
|
||||
master_pass: String,
|
||||
) -> crate::Result<()> {
|
||||
) -> crate::Result<bool> {
|
||||
if field == Name {
|
||||
Account::update_name(user_id, &name, &field_value, db).await?;
|
||||
|
||||
return Ok(());
|
||||
return Account::update_name(user_id, &name, &field_value, db)
|
||||
.await
|
||||
.map_err(Into::into);
|
||||
}
|
||||
|
||||
let salt = Account::get_salt(user_id, &name, db).await?.unwrap();
|
||||
let Some(salt) = Account::get_salt(user_id, &name, db).await? else {
|
||||
return Ok(false);
|
||||
};
|
||||
|
||||
let field_value = spawn_blocking(move || {
|
||||
let cipher = Cipher::new(master_pass.as_bytes(), &salt);
|
||||
@ -28,13 +30,13 @@ async fn update_account(
|
||||
})
|
||||
.await?;
|
||||
|
||||
match field {
|
||||
let updated = match field {
|
||||
Login => Account::update_login(user_id, &name, field_value, db).await?,
|
||||
Pass => Account::update_password(user_id, &name, field_value, db).await?,
|
||||
Name => unreachable!(),
|
||||
}
|
||||
};
|
||||
|
||||
Ok(())
|
||||
Ok(updated)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -54,15 +56,17 @@ async fn get_master_pass(
|
||||
dialogue.exit().await?;
|
||||
let user_id = msg.from().ok_or(NoUserInfo)?.id.0;
|
||||
|
||||
update_account(user_id, &db, name, field, field_value, master_pass).await?;
|
||||
let text = match update_account(user_id, &db, name, field, field_value, master_pass).await {
|
||||
Ok(true) => locale.success.as_str(),
|
||||
Ok(false) => &locale.account_not_found,
|
||||
Err(err) => {
|
||||
log::error!("{err:?}");
|
||||
&locale.something_went_wrong
|
||||
}
|
||||
};
|
||||
|
||||
ids.alter_message(
|
||||
&bot,
|
||||
&locale.success_choose_account_to_view,
|
||||
menu_markup("get", user_id, &db).await?,
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
ids.alter_message(&bot, text, deletion_markup(locale), None)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@ -82,7 +86,7 @@ pub async fn alter(
|
||||
let mut ids: MessageIds = q.message.as_ref().unwrap().into();
|
||||
|
||||
let Some(name) = Account::get_name_by_hash(user_id, &hash, &db).await? else {
|
||||
bot.send_message(ids.0, "Account wasn't found")
|
||||
bot.send_message(ids.0, &locale.account_not_found)
|
||||
.reply_markup(deletion_markup(locale))
|
||||
.await?;
|
||||
bot.answer_callback_query(q.id).await?;
|
||||
|
@ -96,7 +96,6 @@ pub struct Locale {
|
||||
pub send_new_name: LocaleString,
|
||||
pub send_new_login: LocaleString,
|
||||
pub send_new_password: LocaleString,
|
||||
pub success_choose_account_to_view: LocaleString,
|
||||
pub send_json_file: LocaleString,
|
||||
pub send_master_pass_to_delete_everything: LocaleString,
|
||||
pub everything_was_deleted: LocaleString,
|
||||
|
Reference in New Issue
Block a user