Properly avoid allocation for our_username in resync command.

This commit is contained in:
projectmoon 2020-11-23 19:54:16 +00:00
parent 18352c8c19
commit 68db038336
1 changed files with 4 additions and 6 deletions

View File

@ -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.