web & server: add support for email photos
This commit is contained in:
@@ -375,7 +375,21 @@ fn has_unread(tags: &[String]) -> bool {
|
||||
tags.contains(&String::from("unread"))
|
||||
}
|
||||
|
||||
fn render_avatar(_avatar: Option<String>, from: &str, big: bool) -> Node<Msg> {
|
||||
fn render_avatar(photo_url: Option<String>, from: &str, big: bool) -> Node<Msg> {
|
||||
let size = if big {
|
||||
C!["w-16", "h-16", "text-4xl"]
|
||||
} else {
|
||||
C!["w-8", "h-8", "text-l"]
|
||||
};
|
||||
if let Some(photo_url) = photo_url {
|
||||
return div![
|
||||
size,
|
||||
img![attrs! {
|
||||
At::Src => photo_url,
|
||||
}]
|
||||
];
|
||||
}
|
||||
|
||||
let initials: String = from
|
||||
.to_lowercase()
|
||||
.trim()
|
||||
@@ -386,11 +400,7 @@ fn render_avatar(_avatar: Option<String>, from: &str, big: bool) -> Node<Msg> {
|
||||
.take(2)
|
||||
.collect();
|
||||
let from_color = compute_color(from);
|
||||
let size = if big {
|
||||
C!["w-16", "h-16", "text-4xl"]
|
||||
} else {
|
||||
C!["w-8", "h-8", "text-l"]
|
||||
};
|
||||
|
||||
div![
|
||||
C![
|
||||
"[text-shadow:_0_1px_0_rgb(0_0_0_/_40%)]",
|
||||
@@ -416,22 +426,22 @@ fn copy_text_widget(text: &str) -> Node<Msg> {
|
||||
]
|
||||
}
|
||||
fn render_open_header(msg: &ShowThreadQueryThreadOnEmailThreadMessages) -> Node<Msg> {
|
||||
let (from, from_detail) = match &msg.from {
|
||||
let (from, from_detail, photo_url) = match &msg.from {
|
||||
Some(ShowThreadQueryThreadOnEmailThreadMessagesFrom {
|
||||
name: Some(name),
|
||||
addr,
|
||||
}) => (name.to_string(), addr.clone()),
|
||||
photo_url,
|
||||
}) => (name.to_string(), addr.clone(), photo_url.clone()),
|
||||
Some(ShowThreadQueryThreadOnEmailThreadMessagesFrom {
|
||||
addr: Some(addr), ..
|
||||
}) => (addr.to_string(), None),
|
||||
_ => (String::from("UNKNOWN"), None),
|
||||
addr: Some(addr),
|
||||
photo_url,
|
||||
..
|
||||
}) => (addr.to_string(), None, photo_url.clone()),
|
||||
_ => (String::from("UNKNOWN"), None, None),
|
||||
};
|
||||
// TODO(wathiede): get this from server
|
||||
let avatar: Option<String> = None;
|
||||
//let avatar: Option<String> = Some(String::from("https://bulma.io/images/placeholders/64x64.png"));
|
||||
let id = msg.id.clone();
|
||||
let is_unread = has_unread(&msg.tags);
|
||||
let avatar = render_avatar(avatar, &from, true);
|
||||
let avatar = render_avatar(photo_url, &from, true);
|
||||
let unknown = "UNKNOWN".to_string();
|
||||
div![
|
||||
C!["flex", "p-4"],
|
||||
@@ -513,22 +523,22 @@ fn render_open_header(msg: &ShowThreadQueryThreadOnEmailThreadMessages) -> Node<
|
||||
}
|
||||
|
||||
fn render_closed_header(msg: &ShowThreadQueryThreadOnEmailThreadMessages) -> Node<Msg> {
|
||||
let (from, from_detail) = match &msg.from {
|
||||
let (from, from_detail, photo_url) = match &msg.from {
|
||||
Some(ShowThreadQueryThreadOnEmailThreadMessagesFrom {
|
||||
name: Some(name),
|
||||
addr,
|
||||
}) => (name.to_string(), addr.clone()),
|
||||
photo_url,
|
||||
}) => (name.to_string(), addr.clone(), photo_url.clone()),
|
||||
Some(ShowThreadQueryThreadOnEmailThreadMessagesFrom {
|
||||
addr: Some(addr), ..
|
||||
}) => (addr.to_string(), None),
|
||||
_ => (String::from("UNKNOWN"), None),
|
||||
addr: Some(addr),
|
||||
photo_url,
|
||||
..
|
||||
}) => (addr.to_string(), None, photo_url.clone()),
|
||||
_ => (String::from("UNKNOWN"), None, None),
|
||||
};
|
||||
// TODO(wathiede): get this from server
|
||||
let avatar: Option<String> = None;
|
||||
//let avatar: Option<String> = Some(String::from("https://bulma.io/images/placeholders/64x64.png"));
|
||||
let id = msg.id.clone();
|
||||
let is_unread = has_unread(&msg.tags);
|
||||
let avatar = render_avatar(avatar, &from, false);
|
||||
let avatar = render_avatar(photo_url, &from, false);
|
||||
let unknown = "UNKNOWN".to_string();
|
||||
div![
|
||||
C!["flex", "p-4"],
|
||||
|
||||
Reference in New Issue
Block a user