Skip to content

Commit

Permalink
refactor: remove unnecessary mutex
Browse files Browse the repository at this point in the history
  • Loading branch information
oSumAtrIX committed Aug 21, 2022
1 parent 3e18d30 commit 3f1d6af
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 27 deletions.
30 changes: 13 additions & 17 deletions src/commands/moderation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub async fn unmute(
let data = &ctx.data().read().await;
let configuration = &data.configuration;

if let Some(pending_unmute) = data.pending_unmutes.lock().await.get(&member.user.id.0) {
if let Some(pending_unmute) = data.pending_unmutes.get(&member.user.id.0) {
trace!("Cancelling pending unmute for {}", member.user.id.0);
pending_unmute.abort();
}
Expand Down Expand Up @@ -82,7 +82,7 @@ pub async fn mute(

let unmute_time = now + mute_duration;

let data = ctx.data().read().await;
let data = &mut *ctx.data().write().await;
let configuration = &data.configuration;
let embed_color = configuration.general.embed_color;
let mute = &configuration.general.mute;
Expand Down Expand Up @@ -149,29 +149,25 @@ pub async fn mute(
}
};

let mut pending_unmute = data.pending_unmutes.lock().await;
if let Some(pending_unmute) = pending_unmute.get(&member.user.id.0) {
if let Some(pending_unmute) = data.pending_unmutes.get(&member.user.id.0) {
trace!("Cancelling pending unmute for {}", member.user.id.0);
pending_unmute.abort();
}

let r = queue_unmute_member(
ctx.discord(),
&data.database,
&member,
mute_role_id,
mute_duration.num_seconds() as u64,
data.pending_unmutes.insert(
member.user.id.0,
queue_unmute_member(
ctx.discord(),
&data.database,
&member,
mute_role_id,
mute_duration.num_seconds() as u64,
),
);

pending_unmute.insert(member.user.id.0, r);

respond_mute_command(
&ctx,
ModerationKind::Mute(
reason,
format!("<t:{}:F>", unmute_time.timestamp()),
result,
),
ModerationKind::Mute(reason, format!("<t:{}:F>", unmute_time.timestamp()), result),
&member.user,
embed_color,
)
Expand Down
11 changes: 5 additions & 6 deletions src/events/ready.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ use crate::utils::moderation::queue_unmute_member;

pub async fn load_muted_members(ctx: &serenity::Context, _: &serenity::Ready) {
let data = get_data_lock(ctx).await;
let data = data.read().await;
let database = &data.database;
let data = &mut *data.write().await;
let mute_role_id = data.configuration.general.mute.role;
let mut pending_unmutes = data.pending_unmutes.lock().await;

let mut cursor = database
let mut cursor = data
.database
.find::<Muted>(
"muted",
Muted {
Expand All @@ -37,11 +36,11 @@ pub async fn load_muted_members(ctx: &serenity::Context, _: &serenity::Ready) {
let amount_left =
std::cmp::max(current.expires.unwrap() as i64 - Utc::now().timestamp(), 0);

pending_unmutes.insert(
data.pending_unmutes.insert(
member.user.id.0,
queue_unmute_member(
ctx,
database,
&data.database,
&member,
mute_role_id,
amount_left as u64, // i64 as u64 is handled properly here
Expand Down
6 changes: 3 additions & 3 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use std::sync::Arc;
use commands::{configuration, moderation};
use db::database::Database;
use events::Handler;
use poise::serenity_prelude::{self as serenity, Mutex, RwLock, UserId};
use poise::serenity_prelude::{self as serenity, RwLock, UserId};
use tokio::task::JoinHandle;
use tracing::{error, trace};
use utils::bot::load_configuration;
Expand All @@ -29,7 +29,7 @@ impl serenity::TypeMapKey for Data {
pub struct Data {
configuration: Configuration,
database: Database,
pending_unmutes: Mutex<HashMap<u64, JoinHandle<Option<Error>>>>,
pending_unmutes: HashMap<u64, JoinHandle<Option<Error>>>,
}

#[tokio::main]
Expand Down Expand Up @@ -71,7 +71,7 @@ async fn main() {
)
.await
.unwrap(),
pending_unmutes: Mutex::new(HashMap::new()),
pending_unmutes: HashMap::new(),
}));

let handler = Arc::new(Handler::new(
Expand Down
2 changes: 1 addition & 1 deletion src/utils/moderation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pub enum ModerationKind {
Unmute(Option<Error>), // Error
}

pub fn queue_unmute_member(
pub fn queue_unmute_member<'a>(
ctx: &serenity::Context,
database: &Database,
member: &Member,
Expand Down

0 comments on commit 3f1d6af

Please sign in to comment.