Prelude: Borrow data once!

This commit is contained in:
Natsu Kagami 2020-09-03 18:05:46 -04:00
parent 9ea038157d
commit c0df49277c
Signed by: nki
GPG key ID: 73376E117CD20735

View file

@ -187,8 +187,9 @@ pub async fn announcer_of(
#[only_in(guilds)] #[only_in(guilds)]
pub async fn list_announcers(ctx: &Context, m: &Message, _: Args) -> CommandResult { pub async fn list_announcers(ctx: &Context, m: &Message, _: Args) -> CommandResult {
let guild_id = m.guild_id.unwrap(); let guild_id = m.guild_id.unwrap();
let announcers = AnnouncerChannels::open(&*ctx.data.read().await); let data = &*ctx.data.read().await;
let channels = ctx.data.read().await.get::<AnnouncerHandler>().unwrap(); let announcers = AnnouncerChannels::open(data);
let channels = data.get::<AnnouncerHandler>().unwrap();
let channels = channels let channels = channels
.iter() .iter()
.filter_map(|&key| { .filter_map(|&key| {
@ -221,8 +222,9 @@ pub async fn list_announcers(ctx: &Context, m: &Message, _: Args) -> CommandResu
#[only_in(guilds)] #[only_in(guilds)]
#[num_args(1)] #[num_args(1)]
pub async fn register_announcer(ctx: &Context, m: &Message, mut args: Args) -> CommandResult { pub async fn register_announcer(ctx: &Context, m: &Message, mut args: Args) -> CommandResult {
let data = ctx.data.read().await;
let key = args.single::<String>()?; let key = args.single::<String>()?;
let keys = ctx.data.read().await.get::<AnnouncerHandler>().unwrap(); let keys = data.get::<AnnouncerHandler>().unwrap();
if !keys.contains(&&key[..]) { if !keys.contains(&&key[..]) {
m.reply( m.reply(
&ctx, &ctx,
@ -236,7 +238,7 @@ pub async fn register_announcer(ctx: &Context, m: &Message, mut args: Args) -> C
} }
let guild = m.guild(&ctx).await.expect("Guild-only command"); let guild = m.guild(&ctx).await.expect("Guild-only command");
let channel = m.channel_id.to_channel(&ctx).await?; let channel = m.channel_id.to_channel(&ctx).await?;
AnnouncerChannels::open(&*ctx.data.read().await) AnnouncerChannels::open(&*data)
.borrow_mut()? .borrow_mut()?
.entry(key.clone()) .entry(key.clone())
.or_default() .or_default()
@ -263,8 +265,9 @@ pub async fn register_announcer(ctx: &Context, m: &Message, mut args: Args) -> C
#[only_in(guilds)] #[only_in(guilds)]
#[num_args(1)] #[num_args(1)]
pub async fn remove_announcer(ctx: &Context, m: &Message, mut args: Args) -> CommandResult { pub async fn remove_announcer(ctx: &Context, m: &Message, mut args: Args) -> CommandResult {
let data = ctx.data.read().await;
let key = args.single::<String>()?; let key = args.single::<String>()?;
let keys = ctx.data.read().await.get::<AnnouncerHandler>().unwrap(); let keys = data.get::<AnnouncerHandler>().unwrap();
if !keys.contains(&key.as_str()) { if !keys.contains(&key.as_str()) {
m.reply( m.reply(
&ctx, &ctx,
@ -277,7 +280,7 @@ pub async fn remove_announcer(ctx: &Context, m: &Message, mut args: Args) -> Com
return Ok(()); return Ok(());
} }
let guild = m.guild(&ctx).await.expect("Guild-only command"); let guild = m.guild(&ctx).await.expect("Guild-only command");
AnnouncerChannels::open(&*ctx.data.read().await) AnnouncerChannels::open(&*data)
.borrow_mut()? .borrow_mut()?
.entry(key.clone()) .entry(key.clone())
.and_modify(|m| { .and_modify(|m| {