diff --git a/crates/collab_ui2/src/collab_panel.rs b/crates/collab_ui2/src/collab_panel.rs index abeb481d533a200f9c60cb8d9d74b182ac701173..22a8a2cbba6b18806f3e612c7dd29e7677dcd536 100644 --- a/crates/collab_ui2/src/collab_panel.rs +++ b/crates/collab_ui2/src/collab_panel.rs @@ -3318,7 +3318,7 @@ impl Render for CollabPanel { .user .avatar .as_ref() - .map(|avatar| Avatar::new(avatar.clone())), + .map(|avatar| Avatar::data(avatar.clone())), ) .child(Label::new(contact.user.github_login.clone())) .on_mouse_down(gpui::MouseButton::Left, { diff --git a/crates/collab_ui2/src/collab_titlebar_item.rs b/crates/collab_ui2/src/collab_titlebar_item.rs index aad908531ac3a8b1362494778c27f2a99ea42391..9386d3ff35e540ab209cc44c8331bc1414871aa3 100644 --- a/crates/collab_ui2/src/collab_titlebar_item.rs +++ b/crates/collab_ui2/src/collab_titlebar_item.rs @@ -182,12 +182,12 @@ impl Render for CollabTitlebarItem { current_user .avatar .clone() - .map(|avatar| div().child(Avatar::new(avatar.clone()))) + .map(|avatar| div().child(Avatar::data(avatar.clone()))) .into_iter() .chain(remote_participants.into_iter().flat_map(|(user, peer_id)| { user.avatar.as_ref().map(|avatar| { div() - .child(Avatar::new(avatar.clone()).into_element()) + .child(Avatar::data(avatar.clone()).into_element()) .on_mouse_down(MouseButton::Left, { let workspace = workspace.clone(); let id = peer_id.clone(); @@ -235,7 +235,7 @@ impl Render for CollabTitlebarItem { .map(|this| { if let Some(user) = current_user { this.when_some(user.avatar.clone(), |this, avatar| { - this.child(ui::Avatar::new(avatar)) + this.child(ui::Avatar::data(avatar)) }) } else { this.child(Button::new("Sign in").on_click(move |_, cx| { diff --git a/crates/collab_ui2/src/notifications/incoming_call_notification.rs b/crates/collab_ui2/src/notifications/incoming_call_notification.rs index d400b14f5f362c7c60658a2dd857b65785ccc693..f47fcf07515195d325a663621fa9d34a55571452 100644 --- a/crates/collab_ui2/src/notifications/incoming_call_notification.rs +++ b/crates/collab_ui2/src/notifications/incoming_call_notification.rs @@ -129,7 +129,7 @@ impl IncomingCallNotification { .calling_user .avatar .as_ref() - .map(|avatar| Avatar::new(avatar.clone())), + .map(|avatar| Avatar::data(avatar.clone())), ) .child( v_stack() diff --git a/crates/ui2/src/components/avatar.rs b/crates/ui2/src/components/avatar.rs index 0ea7702f52081c924dfd3124898cd33336ff241b..d358b221da9287f488bd68dd95bcff659191b5a5 100644 --- a/crates/ui2/src/components/avatar.rs +++ b/crates/ui2/src/components/avatar.rs @@ -1,5 +1,7 @@ +use std::sync::Arc; + use crate::prelude::*; -use gpui::{img, ImageSource, Img, IntoElement}; +use gpui::{img, ImageData, ImageSource, Img, IntoElement}; #[derive(Debug, Default, PartialEq, Clone)] pub enum Shape { @@ -34,7 +36,13 @@ impl RenderOnce for Avatar { } impl Avatar { - pub fn new(src: impl Into) -> Self { + pub fn uri(src: impl Into) -> Self { + Self { + src: src.into().into(), + shape: Shape::Circle, + } + } + pub fn data(src: Arc) -> Self { Self { src: src.into(), shape: Shape::Circle, diff --git a/crates/ui2/src/components/list.rs b/crates/ui2/src/components/list.rs index a994583666ef98404097299824835a28f82be86c..875ab6d97e2032ae8c6be9bb9e0445d99897d099 100644 --- a/crates/ui2/src/components/list.rs +++ b/crates/ui2/src/components/list.rs @@ -323,8 +323,8 @@ impl RenderOnce for ListItem { .color(Color::Muted), ), ), - Some(GraphicSlot::Avatar(src)) => Some(h_stack().child(Avatar::new(src))), - Some(GraphicSlot::PublicActor(src)) => Some(h_stack().child(Avatar::new(src))), + Some(GraphicSlot::Avatar(src)) => Some(h_stack().child(Avatar::uri(src))), + Some(GraphicSlot::PublicActor(src)) => Some(h_stack().child(Avatar::uri(src))), None => None, }; diff --git a/crates/ui2/src/components/stories/avatar.rs b/crates/ui2/src/components/stories/avatar.rs index 177065cfcb96aaab262bb35001c63eb75b500842..505ede4ecc98d1248533f806b8fb47fc932a0028 100644 --- a/crates/ui2/src/components/stories/avatar.rs +++ b/crates/ui2/src/components/stories/avatar.rs @@ -13,11 +13,11 @@ impl Render for AvatarStory { Story::container() .child(Story::title_for::()) .child(Story::label("Default")) - .child(Avatar::new( - "https://avatars.githubusercontent.com/u/1714999?v=4".into(), + .child(Avatar::uri( + "https://avatars.githubusercontent.com/u/1714999?v=4", )) - .child(Avatar::new( - "https://avatars.githubusercontent.com/u/326587?v=4".into(), + .child(Avatar::uri( + "https://avatars.githubusercontent.com/u/326587?v=4", )) } }