From f1228ed80f2cef05460cd78df31f3c712a3f8ad9 Mon Sep 17 00:00:00 2001 From: StNicolay Date: Fri, 23 Jun 2023 11:38:54 +0300 Subject: [PATCH] Removed library crate for pass_manager --- src/lib.rs | 71 ------------------------------------------ src/main.rs | 73 ++++++++++++++++++++++++++++++++++++++++++-- src/state/generic.rs | 5 +-- src/state/handler.rs | 3 +- 4 files changed, 75 insertions(+), 77 deletions(-) delete mode 100644 src/lib.rs diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index a5c84fe..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,71 +0,0 @@ -mod callbacks; -mod commands; -mod default; -mod errors; -mod markups; -mod master_password_check; -mod models; -mod state; -mod utils; - -use anyhow::{Error, Result}; -use commands::Command; -use futures::future::BoxFuture as PinnedFuture; -use sea_orm::prelude::*; -use state::{Handler, MainDialogue, State}; -use teloxide::{ - adaptors::{throttle::Limits, Throttle}, - dispatching::dialogue::InMemStorage, - filter_command, - prelude::*, -}; - -pub fn get_dispatcher( - token: String, - db: DatabaseConnection, -) -> Dispatcher, crate::Error, teloxide::dispatching::DefaultKey> { - use dptree::{case, deps}; - - let bot = Bot::new(token).throttle(Limits::default()); - - let command_handler = filter_command::() - .branch(case![Command::Start].endpoint(commands::start)) - .branch(case![Command::Help].endpoint(commands::help)) - .branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass)) - .branch(case![Command::GenPassword].endpoint(commands::gen_password)) - .branch(case![Command::Cancel].endpoint(commands::cancel)) - // This branch filters out the users that don't have a master password set - .branch(master_password_check::get_handler()) - .branch(case![Command::AddAccount].endpoint(commands::add_account)) - .branch(case![Command::GetAccount].endpoint(commands::get_account)) - .branch(case![Command::GetAccounts].endpoint(commands::get_accounts)) - .branch(case![Command::Delete].endpoint(commands::delete)) - .branch(case![Command::DeleteAll].endpoint(commands::delete_all)) - .branch(case![Command::Export].endpoint(commands::export)) - .branch(case![Command::Import].endpoint(commands::import)); - - let message_handler = Update::filter_message() - .map_async(utils::delete_message) - .enter_dialogue::, State>() - .branch(case![State::GetExistingName(next)].endpoint(state::get_existing_name)) - .branch(case![State::GetNewName(next)].endpoint(state::get_new_name)) - .branch(case![State::GetMasterPass(next)].endpoint(state::get_master_pass)) - .branch(case![State::GetNewMasterPass(next)].endpoint(state::get_new_master_pass)) - .branch(case![State::GetLogin(next)].endpoint(state::get_login)) - .branch(case![State::GetPassword(next)].endpoint(state::get_password)) - .branch(case![State::GetUser(next)].endpoint(state::get_user)) - .branch(command_handler) - .endpoint(default::default); - - let callback_handler = - Update::filter_callback_query().chain(callbacks::delete_message::get_handler()); - - let handler = dptree::entry() - .branch(message_handler) - .branch(callback_handler); - - Dispatcher::builder(bot, handler) - .dependencies(deps![db, InMemStorage::::new()]) - .enable_ctrlc_handler() - .build() -} diff --git a/src/main.rs b/src/main.rs index e25eb3b..bc45871 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,76 @@ -use anyhow::Result; +mod callbacks; +mod commands; +mod default; +mod errors; +mod markups; +mod master_password_check; +mod models; +mod state; +mod utils; + +use anyhow::{Error, Result}; +use commands::Command; use dotenv::dotenv; use migration::{Migrator, MigratorTrait}; -use pass_manager::get_dispatcher; -use sea_orm::Database; +use sea_orm::{prelude::*, Database}; +use state::{Handler, MainDialogue, State}; use std::env; +use teloxide::{ + adaptors::{throttle::Limits, Throttle}, + dispatching::dialogue::InMemStorage, + filter_command, + prelude::*, +}; + +fn get_dispatcher( + token: String, + db: DatabaseConnection, +) -> Dispatcher, crate::Error, teloxide::dispatching::DefaultKey> { + use dptree::{case, deps}; + + let bot = Bot::new(token).throttle(Limits::default()); + + let command_handler = filter_command::() + .branch(case![Command::Start].endpoint(commands::start)) + .branch(case![Command::Help].endpoint(commands::help)) + .branch(case![Command::SetMasterPass].endpoint(commands::set_master_pass)) + .branch(case![Command::GenPassword].endpoint(commands::gen_password)) + .branch(case![Command::Cancel].endpoint(commands::cancel)) + // This branch filters out the users that don't have a master password set + .branch(master_password_check::get_handler()) + .branch(case![Command::AddAccount].endpoint(commands::add_account)) + .branch(case![Command::GetAccount].endpoint(commands::get_account)) + .branch(case![Command::GetAccounts].endpoint(commands::get_accounts)) + .branch(case![Command::Delete].endpoint(commands::delete)) + .branch(case![Command::DeleteAll].endpoint(commands::delete_all)) + .branch(case![Command::Export].endpoint(commands::export)) + .branch(case![Command::Import].endpoint(commands::import)); + + let message_handler = Update::filter_message() + .map_async(utils::delete_message) + .enter_dialogue::, State>() + .branch(case![State::GetExistingName(next)].endpoint(state::get_existing_name)) + .branch(case![State::GetNewName(next)].endpoint(state::get_new_name)) + .branch(case![State::GetMasterPass(next)].endpoint(state::get_master_pass)) + .branch(case![State::GetNewMasterPass(next)].endpoint(state::get_new_master_pass)) + .branch(case![State::GetLogin(next)].endpoint(state::get_login)) + .branch(case![State::GetPassword(next)].endpoint(state::get_password)) + .branch(case![State::GetUser(next)].endpoint(state::get_user)) + .branch(command_handler) + .endpoint(default::default); + + let callback_handler = + Update::filter_callback_query().chain(callbacks::delete_message::get_handler()); + + let handler = dptree::entry() + .branch(message_handler) + .branch(callback_handler); + + Dispatcher::builder(bot, handler) + .dependencies(deps![db, InMemStorage::::new()]) + .enable_ctrlc_handler() + .build() +} #[tokio::main] async fn main() -> Result<()> { diff --git a/src/state/generic.rs b/src/state/generic.rs index 7489ef1..8967254 100644 --- a/src/state/generic.rs +++ b/src/state/generic.rs @@ -1,4 +1,5 @@ -use crate::{errors::HandlerUsed, markups::deletion_markup, utils::delete_optional, PinnedFuture}; +use crate::{errors::HandlerUsed, markups::deletion_markup, utils::delete_optional}; +use futures::future::BoxFuture; use sea_orm::prelude::*; use teloxide::{adaptors::Throttle, prelude::*}; @@ -19,7 +20,7 @@ where &'a Message, &'a DatabaseConnection, &'a str, - ) -> PinnedFuture<'a, crate::Result>>, + ) -> BoxFuture<'a, crate::Result>>, { let mut handler = next.lock().await; delete_optional(&bot, handler.previous.as_ref()).await; diff --git a/src/state/handler.rs b/src/state/handler.rs index d8e0aff..dd6ed97 100644 --- a/src/state/handler.rs +++ b/src/state/handler.rs @@ -1,4 +1,5 @@ use crate::MainDialogue; +use futures::future::BoxFuture; use sea_orm::prelude::*; use std::{future::Future, sync::Arc}; use teloxide::{adaptors::Throttle, prelude::*}; @@ -11,7 +12,7 @@ type DynHanlder = Box< DatabaseConnection, MainDialogue, T, - ) -> crate::PinnedFuture<'static, crate::Result<()>> + ) -> BoxFuture<'static, crate::Result<()>> + Send, >;