From a817f7f39c1f8da8b219b6504a14b53862935b5e Mon Sep 17 00:00:00 2001 From: StNicolay Date: Thu, 1 Jun 2023 14:54:00 +0300 Subject: [PATCH] Updated master_password_check to use Arc instead of a string representation of an error --- src/master_password_check.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/master_password_check.rs b/src/master_password_check.rs index 267b65a..e7336d7 100644 --- a/src/master_password_check.rs +++ b/src/master_password_check.rs @@ -1,35 +1,38 @@ use crate::errors::NoUserInfo; +use crate::markups::deletion_markup; use entity::prelude::*; use sea_orm::DatabaseConnection; +use std::sync::Arc; use teloxide::{adaptors::Throttle, dispatching::DpHandlerDescription, prelude::*}; -use super::markups::deletion_markup; - /// A wierd filter that checks for the existance of a master password. /// /// # Returns /// /// Returns None if account exists, Some(None) if there's an account and Some(Some(String)) if an error occures. /// The String represents the error that occured -async fn master_pass_exists(msg: Message, db: DatabaseConnection) -> Option> { +async fn master_pass_exists( + msg: Message, + db: DatabaseConnection, +) -> Option>> { let user_id = match msg.from() { Some(user) => user.id.0, - None => return Some(Some(NoUserInfo.to_string())), + None => return Some(Some(Arc::new(NoUserInfo))), }; match MasterPass::exists(user_id, &db).await { Ok(true) => None, Ok(false) => Some(None), - Err(err) => Some(Some(err.to_string())), + Err(err) => Some(Some(Arc::new(err))), } } async fn notify_about_no_master_pass( bot: Throttle, - result: Option, + result: Option>, msg: Message, ) -> crate::Result<()> { - if let Some(message) = result { - return Err(crate::Error::msg(message)); + if let Some(error) = result { + return Err(error.into()); } bot.send_message(msg.chat.id, "No master password set") .reply_markup(deletion_markup())