Detailed changes
@@ -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, {
@@ -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| {
@@ -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()
@@ -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<ImageSource>) -> Self {
+ pub fn uri(src: impl Into<SharedString>) -> Self {
+ Self {
+ src: src.into().into(),
+ shape: Shape::Circle,
+ }
+ }
+ pub fn data(src: Arc<ImageData>) -> Self {
Self {
src: src.into(),
shape: Shape::Circle,
@@ -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,
};
@@ -13,11 +13,11 @@ impl Render for AvatarStory {
Story::container()
.child(Story::title_for::<Avatar>())
.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",
))
}
}