Don't request usernames from matrix server when creating messages

There isn't any sense in requesting the username again everytime a new
message is added to a room.
This commit is contained in:
Julian Sparber 2020-12-31 17:40:35 +01:00 committed by Christopher Davis
parent 5f9f177965
commit eef50dee66
2 changed files with 2 additions and 67 deletions

View file

@ -2,7 +2,6 @@ use crate::app::RUNTIME;
use crate::appop::UserInfoCache;
use crate::backend::user;
use crate::util::cache_dir_path;
use gtk::LabelExt;
use matrix_sdk::Client as MatrixClient;
use anyhow::Error;
@ -120,56 +119,3 @@ pub fn download_to_cache(
}
});
}
/* Get username based on the MXID, we should cache the username */
pub fn download_to_cache_username(
session_client: MatrixClient,
uid: UserId,
label: gtk::Label,
avatar: Option<Rc<RefCell<AvatarData>>>,
) {
let response = RUNTIME.spawn(async move {
user::get_username(session_client, &uid)
.await
.ok()
.flatten()
.unwrap_or_default()
});
glib::MainContext::default().spawn_local(async move {
if let Ok(username) = response.await {
label.set_text(&username);
if let Some(ref rc_data) = avatar {
let mut data = rc_data.borrow_mut();
data.redraw(Some(username));
}
}
});
}
/* Download username for a given MXID and update a emote message
* FIXME: We should cache this request and do it before we need to display the username in an emote*/
pub fn download_to_cache_username_emote(
session_client: MatrixClient,
uid: UserId,
text: &str,
label: gtk::Label,
avatar: Option<Rc<RefCell<AvatarData>>>,
) {
let response = RUNTIME.spawn(async move {
user::get_username(session_client, &uid)
.await
.ok()
.flatten()
.unwrap_or_default()
});
let text = text.to_string();
glib::MainContext::default().spawn_local(async move {
if let Ok(username) = response.await {
label.set_markup(&format!("<b>{}</b> {}", &username, text));
if let Some(ref rc_data) = avatar {
let mut data = rc_data.borrow_mut();
data.redraw(Some(username));
}
}
});
}

View file

@ -13,8 +13,6 @@ use std::rc::Rc;
use crate::util::markup_text;
use crate::cache::download_to_cache;
use crate::cache::download_to_cache_username;
use crate::cache::download_to_cache_username_emote;
use crate::globals;
use crate::ui::MessageContent as Message;
@ -231,7 +229,7 @@ impl MessageBox {
let body = match msg.mtype {
RowType::Sticker => self.build_room_msg_sticker(session_client, msg),
RowType::Image => self.build_room_msg_image(session_client, msg),
RowType::Emote => self.build_room_msg_emote(session_client, msg),
RowType::Emote => self.build_room_msg_emote(msg),
RowType::Audio => self.build_room_audio_player(session_client, msg),
RowType::Video => self.build_room_video_player(session_client, msg),
RowType::File => self.build_room_msg_file(msg),
@ -284,7 +282,6 @@ impl MessageBox {
uid.clone(),
data.clone(),
);
download_to_cache_username(session_client, uid, self.username.clone(), Some(data));
avatar
}
@ -648,7 +645,7 @@ impl MessageBox {
info
}
fn build_room_msg_emote(&self, session_client: MatrixClient, msg: &Message) -> gtk::Box {
fn build_room_msg_emote(&self, msg: &Message) -> gtk::Box {
let bx = gtk::Box::new(gtk::Orientation::Horizontal, 0);
/* Use MXID till we have a alias */
let sname = msg
@ -659,14 +656,6 @@ impl MessageBox {
let body: &str = &msg.body;
let markup = markup_text(body);
download_to_cache_username_emote(
session_client,
msg.sender.clone(),
&markup,
msg_label.clone(),
None,
);
self.connect_right_click_menu(msg, Some(&msg_label));
msg_label.set_markup(&format!("<b>{}</b> {}", sname, markup));
self.set_label_styles(&msg_label);