DM Chat List: Show avatars on channel entries

This commit is contained in:
Bu5hm4nn 2024-07-12 10:22:32 +02:00
parent d3f4673217
commit 1cfe4db44f

View File

@ -1,11 +1,15 @@
use crate::AVATAR_SIZE_F32;
use super::{widgets, GossipUi, Page};
use eframe::egui;
use eframe::egui::vec2;
use eframe::egui::Rect;
use egui::{Context, Label, RichText, Ui};
use gossip_lib::FeedKind;
use gossip_lib::Person;
use gossip_lib::GLOBALS;
use gossip_lib::{Error, ErrorKind};
use gossip_lib::{PersonTable, Table};
use std::time::{Duration, Instant};
pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Frame, ui: &mut Ui) {
@ -59,6 +63,34 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
Some(app.theme.main_content_bgcolor()),
|ui, app| {
ui.set_min_width(ui.available_width());
ui.set_max_height(AVATAR_SIZE_F32);
ui.horizontal(|ui| {
// avatar(s)
if let Some(local) = GLOBALS.identity.public_key() {
for key in channeldata.dm_channel.keys() {
if key != &local {
let person = if let Ok(Some(person)) = PersonTable::read_record(*key, None) {
person
} else {
let mut person = Person::new(*key);
let _ = PersonTable::write_record(&mut person, None);
person
};
let avatar = if let Some(avatar) = app.try_get_avatar(ctx, &person.pubkey) {
avatar
} else {
app.placeholder_avatar.clone()
};
widgets::paint_avatar(ui, &person, &avatar, widgets::AvatarSize::Feed);
}
}
}
ui.add_space(10.0);
ui.vertical(|ui| {
ui.horizontal_wrapped(|ui| {
let channel_name = channeldata.dm_channel.name();
@ -97,6 +129,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
);
});
ui.with_layout(egui::Layout::bottom_up(egui::Align::LEFT), |ui| {
ui.horizontal(|ui| {
if is_signer_ready {
if let Some(message) = &channeldata.latest_message_content {
@ -122,6 +155,8 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
);
});
});
});
});
},
);
let rect = Rect::from_min_size(