Introduced GetUserExt
This commit is contained in:
parent
374a9d91c7
commit
659965a744
@ -51,7 +51,7 @@ async fn get_master_pass(
|
|||||||
master_pass: String,
|
master_pass: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let text = match 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(true) => locale.success.as_str(),
|
||||||
|
@ -15,7 +15,7 @@ async fn get_master_pass(
|
|||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
|
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let Some(account) = Account::get(user_id, &name, &db).await? else {
|
let Some(account) = Account::get(user_id, &name, &db).await? else {
|
||||||
bot.send_message(msg.chat.id, &locale.no_accounts_found)
|
bot.send_message(msg.chat.id, &locale.no_accounts_found)
|
||||||
|
@ -13,7 +13,7 @@ async fn get_master_pass(
|
|||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
|
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
Account::delete(user_id, &name, &db).await?;
|
Account::delete(user_id, &name, &db).await?;
|
||||||
|
|
||||||
ids.alter_message(&bot, &locale.success, deletion_markup(locale), None)
|
ids.alter_message(&bot, &locale.success, deletion_markup(locale), None)
|
||||||
|
@ -17,7 +17,7 @@ async fn get_master_pass(
|
|||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
|
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let account = spawn_blocking(move || {
|
let account = spawn_blocking(move || {
|
||||||
DecryptedAccount {
|
DecryptedAccount {
|
||||||
|
@ -6,7 +6,7 @@ pub async fn delete(
|
|||||||
db: Pool,
|
db: Pool,
|
||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let markup = menu_markup("delete1", user_id, &db).await?;
|
let markup = menu_markup("delete1", user_id, &db).await?;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ async fn get_master_pass(
|
|||||||
_: String,
|
_: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let mut txn = db.begin().await?;
|
let mut txn = db.begin().await?;
|
||||||
let result = (
|
let result = (
|
||||||
|
@ -29,7 +29,7 @@ async fn get_master_pass(
|
|||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
|
|
||||||
ids.delete(&bot).await?;
|
ids.delete(&bot).await?;
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
let mut accounts = Vec::new();
|
let mut accounts = Vec::new();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,7 @@ pub async fn get_account(
|
|||||||
db: Pool,
|
db: Pool,
|
||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let markup = menu_markup("decrypt", user_id, &db).await?;
|
let markup = menu_markup("decrypt", user_id, &db).await?;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ pub async fn get_accounts(
|
|||||||
db: Pool,
|
db: Pool,
|
||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
let mut account_names = Account::get_names(user_id, &db);
|
let mut account_names = Account::get_names(user_id, &db);
|
||||||
|
|
||||||
let Some(mut text) = account_names.try_next().await? else {
|
let Some(mut text) = account_names.try_next().await? else {
|
||||||
|
@ -38,7 +38,7 @@ async fn get_master_pass(
|
|||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
|
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
let mut failed = Vec::new();
|
let mut failed = Vec::new();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,7 @@ pub async fn menu(
|
|||||||
db: Pool,
|
db: Pool,
|
||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let markup = menu_markup("get", user_id, &db).await?;
|
let markup = menu_markup("get", user_id, &db).await?;
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@ async fn get_master_pass2(
|
|||||||
master_pass: String,
|
master_pass: String,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
dialogue.exit().await?;
|
dialogue.exit().await?;
|
||||||
let from = msg.from.as_ref().ok_or(NoUserInfo)?;
|
let from = msg.get_user()?;
|
||||||
let user_id = from.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
if !hash.verify(master_pass.as_bytes()) {
|
if !hash.verify(master_pass.as_bytes()) {
|
||||||
ids.alter_message(
|
ids.alter_message(
|
||||||
@ -82,7 +82,7 @@ pub async fn set_master_pass(
|
|||||||
db: Pool,
|
db: Pool,
|
||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
if MasterPass::exists(user_id, &db).await? {
|
if MasterPass::exists(user_id, &db).await? {
|
||||||
bot.send_message(msg.chat.id, &locale.master_password_is_set)
|
bot.send_message(msg.chat.id, &locale.master_password_is_set)
|
||||||
.reply_markup(deletion_markup(locale))
|
.reply_markup(deletion_markup(locale))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::prelude::*;
|
use crate::{errors::NoUserInfo, prelude::*};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use teloxide::{
|
use teloxide::{
|
||||||
dispatching::{dialogue::GetChatId, DpHandlerDescription},
|
dispatching::{dialogue::GetChatId, DpHandlerDescription},
|
||||||
|
@ -10,6 +10,7 @@ mod markups;
|
|||||||
mod models;
|
mod models;
|
||||||
mod prelude;
|
mod prelude;
|
||||||
mod state;
|
mod state;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
use anyhow::{Error, Result};
|
use anyhow::{Error, Result};
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
pub use crate::{
|
pub use crate::{
|
||||||
cryptography::{account::Decrypted as DecryptedAccount, validate_field},
|
cryptography::{account::Decrypted as DecryptedAccount, validate_field},
|
||||||
entity::{account::Account, master_pass::MasterPass, Pool},
|
entity::{account::Account, master_pass::MasterPass, Pool},
|
||||||
errors::{handle_error, NoUserInfo},
|
errors::handle_error,
|
||||||
first_handler, handler,
|
first_handler, handler,
|
||||||
locales::LocaleRef,
|
locales::LocaleRef,
|
||||||
markups::{deletion_markup, menu_markup},
|
markups::{deletion_markup, menu_markup},
|
||||||
state::{CallbackMessageIdExt as _, Handler, MainDialogue, MessageIds, PackagedHandler, State},
|
state::{CallbackMessageIdExt as _, Handler, MainDialogue, MessageIds, PackagedHandler, State},
|
||||||
|
utils::GetUserExt as _,
|
||||||
};
|
};
|
||||||
pub use futures::{StreamExt as _, TryStreamExt as _};
|
pub use futures::{StreamExt as _, TryStreamExt as _};
|
||||||
pub use teloxide::{adaptors::Throttle, prelude::*};
|
pub use teloxide::{adaptors::Throttle, prelude::*};
|
||||||
|
@ -8,7 +8,7 @@ async fn check_master_pass(
|
|||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
master_pass: &str,
|
master_pass: &str,
|
||||||
) -> crate::Result<Option<String>> {
|
) -> crate::Result<Option<String>> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
let Some(model) = MasterPass::get(user_id, db).await? else {
|
let Some(model) = MasterPass::get(user_id, db).await? else {
|
||||||
handle_error(anyhow::anyhow!(
|
handle_error(anyhow::anyhow!(
|
||||||
"User was put into the GetMasterPass state with no master password set"
|
"User was put into the GetMasterPass state with no master password set"
|
||||||
|
@ -7,7 +7,7 @@ async fn check_new_account_name(
|
|||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
name: &str,
|
name: &str,
|
||||||
) -> crate::Result<Option<String>> {
|
) -> crate::Result<Option<String>> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
if Account::exists(user_id, name, db).await? {
|
if Account::exists(user_id, name, db).await? {
|
||||||
Ok(Some(locale.account_already_exists.to_owned()))
|
Ok(Some(locale.account_already_exists.to_owned()))
|
||||||
|
@ -181,7 +181,7 @@ pub async fn get_user(
|
|||||||
locale: LocaleRef,
|
locale: LocaleRef,
|
||||||
handler: PackagedHandler<User>,
|
handler: PackagedHandler<User>,
|
||||||
) -> crate::Result<()> {
|
) -> crate::Result<()> {
|
||||||
let user_id = msg.from.as_ref().ok_or(NoUserInfo)?.id.0;
|
let user_id = msg.get_user_id()?;
|
||||||
|
|
||||||
let mut handler = handler.lock().await;
|
let mut handler = handler.lock().await;
|
||||||
if handler.func.is_none() {
|
if handler.func.is_none() {
|
||||||
|
17
src/utils.rs
Normal file
17
src/utils.rs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
use teloxide::types::User;
|
||||||
|
|
||||||
|
use crate::{errors::NoUserInfo, prelude::*};
|
||||||
|
|
||||||
|
pub trait GetUserExt {
|
||||||
|
fn get_user(&self) -> Result<&User, NoUserInfo>;
|
||||||
|
|
||||||
|
fn get_user_id(&self) -> Result<u64, NoUserInfo> {
|
||||||
|
self.get_user().map(|user| user.id.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GetUserExt for Message {
|
||||||
|
fn get_user(&self) -> Result<&User, NoUserInfo> {
|
||||||
|
self.from.as_ref().ok_or(NoUserInfo)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user