refactor: more avatar improvements

This commit is contained in:
MeexReay 2025-07-05 18:55:02 +03:00
parent 3fc9bd7bca
commit 0bb94a1ae5

View File

@ -842,8 +842,6 @@ fn setup(_: &Application, ctx: Arc<Context>, ui: UiModel) {
} }
}); });
let mut avatars = Vec::new();
for message in messages.iter() { for message in messages.iter() {
let Some(avatar_url) = grab_avatar(message) else { continue }; let Some(avatar_url) = grab_avatar(message) else { continue };
let avatar_id = get_avatar_id(&avatar_url); let avatar_id = get_avatar_id(&avatar_url);
@ -863,36 +861,34 @@ fn setup(_: &Application, ctx: Arc<Context>, ui: UiModel) {
pixbuf.rowstride() pixbuf.rowstride()
))) else { continue }; ))) else { continue };
avatars.push((avatar_id, avatar)); timeout_add_once(Duration::ZERO, {
} let added = added.clone();
move || {
while !added.load(Ordering::SeqCst) {}
timeout_add_once(Duration::ZERO, { GLOBAL.with(|global| {
move || { if let Some(ui) = &*global.borrow() {
while !added.load(Ordering::SeqCst) {} let pixbuf = Pixbuf::from_bytes(
&avatar.0,
GLOBAL.with(|global| { avatar.1,
if let Some(ui) = &*global.borrow() { avatar.2,
for (id, avatar) in avatars { avatar.3,
if let Some(pics) = ui.avatars.lock().unwrap().remove(&id) { avatar.4,
avatar.5,
avatar.6
);
if let Some(pics) = ui.avatars.lock().unwrap().remove(&avatar_id) {
for pic in pics { for pic in pics {
pic.set_pixbuf(Some(& pic.set_pixbuf(Some(&pixbuf));
Pixbuf::from_bytes(
&avatar.0,
avatar.1,
avatar.2,
avatar.3,
avatar.4,
avatar.5,
avatar.6
)
));
} }
} }
} }
} });
}); }
} });
}); }
} }
} }
}); });