forked from projectmoon/tenebrous-dicebot
Properly avoid allocation for our_username in resync command.
This commit is contained in:
parent
18352c8c19
commit
68db038336
|
@ -3,7 +3,7 @@ use crate::context::Context;
|
|||
use crate::db::errors::DataError;
|
||||
use crate::matrix;
|
||||
use async_trait::async_trait;
|
||||
use matrix_sdk::identifiers::RoomId;
|
||||
use matrix_sdk::identifiers::{RoomId, UserId};
|
||||
use std::convert::TryFrom;
|
||||
|
||||
pub struct ResyncCommand;
|
||||
|
@ -18,16 +18,14 @@ impl Command for ResyncCommand {
|
|||
|
||||
async fn execute(&self, ctx: &Context<'_>) -> Execution {
|
||||
let room_id = RoomId::try_from(ctx.room_id).expect("failed to decode room ID");
|
||||
let our_username = match ctx.matrix_client.user_id().await {
|
||||
Some(username) => username.as_str().to_owned(),
|
||||
_ => "".to_owned(),
|
||||
};
|
||||
let our_username: Option<UserId> = ctx.matrix_client.user_id().await;
|
||||
let our_username: &str = our_username.as_ref().map_or("", UserId::as_str);
|
||||
|
||||
let usernames = matrix::get_users_in_room(&ctx.matrix_client, &room_id).await;
|
||||
|
||||
let result: ResyncResult = usernames
|
||||
.into_iter()
|
||||
.filter(|username| username != &our_username)
|
||||
.filter(|username| username != our_username)
|
||||
.map(|username| ctx.db.rooms.add_user_to_room(&username, room_id.as_str()))
|
||||
.collect(); //Make use of collect impl on Result.
|
||||
|
||||
|
|
Loading…
Reference in New Issue