feat(web): fallback avatar url
This commit is contained in:
parent
78dbf54384
commit
1182cb589f
3 changed files with 7 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use crate::prelude::*;
|
use crate::{prelude::*, DEFAULT_AVATAR_URL};
|
||||||
|
|
||||||
use apb::{Activity, ActivityMut, Actor, Base, Object, ObjectMut};
|
use apb::{Activity, ActivityMut, Actor, Base, Object, ObjectMut};
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ pub fn ActorStrip(object: crate::Object) -> impl IntoView {
|
||||||
let actor_id = object.id().unwrap_or_default().to_string();
|
let actor_id = object.id().unwrap_or_default().to_string();
|
||||||
let username = object.preferred_username().unwrap_or_default().to_string();
|
let username = object.preferred_username().unwrap_or_default().to_string();
|
||||||
let domain = object.id().unwrap_or_default().replace("https://", "").split('/').next().unwrap_or_default().to_string();
|
let domain = object.id().unwrap_or_default().replace("https://", "").split('/').next().unwrap_or_default().to_string();
|
||||||
let avatar = object.icon().get().map(|x| x.url().id().unwrap_or_default()).unwrap_or_default();
|
let avatar = object.icon().get().map(|x| x.url().id().unwrap_or(DEFAULT_AVATAR_URL.into())).unwrap_or(DEFAULT_AVATAR_URL.into());
|
||||||
view! {
|
view! {
|
||||||
<a href={Uri::web(FetchKind::User, &actor_id)} class="clean hover">
|
<a href={Uri::web(FetchKind::User, &actor_id)} class="clean hover">
|
||||||
<img src={avatar} class="avatar-inline mr-s" /><b>{username}</b><small>@{domain}</small>
|
<img src={avatar} class="avatar-inline mr-s" /><b>{username}</b><small>@{domain}</small>
|
||||||
|
@ -25,7 +25,7 @@ pub fn ActorBanner(object: crate::Object) -> impl IntoView {
|
||||||
serde_json::Value::Object(_) => {
|
serde_json::Value::Object(_) => {
|
||||||
let uid = object.id().unwrap_or_default().to_string();
|
let uid = object.id().unwrap_or_default().to_string();
|
||||||
let uri = Uri::web(FetchKind::User, &uid);
|
let uri = Uri::web(FetchKind::User, &uid);
|
||||||
let avatar_url = object.icon().get().map(|x| x.url().id().unwrap_or_default()).unwrap_or_default();
|
let avatar_url = object.icon().get().map(|x| x.url().id().unwrap_or(DEFAULT_AVATAR_URL.into())).unwrap_or(DEFAULT_AVATAR_URL.into());
|
||||||
let display_name = object.name().unwrap_or_default().to_string();
|
let display_name = object.name().unwrap_or_default().to_string();
|
||||||
let username = object.preferred_username().unwrap_or_default().to_string();
|
let username = object.preferred_username().unwrap_or_default().to_string();
|
||||||
let domain = object.id().unwrap_or_default().replace("https://", "").split('/').next().unwrap_or_default().to_string();
|
let domain = object.id().unwrap_or_default().replace("https://", "").split('/').next().unwrap_or_default().to_string();
|
||||||
|
|
|
@ -11,6 +11,7 @@ pub mod prelude;
|
||||||
pub const URL_BASE: &str = "https://feditest.alemi.dev";
|
pub const URL_BASE: &str = "https://feditest.alemi.dev";
|
||||||
pub const URL_PREFIX: &str = "/web";
|
pub const URL_PREFIX: &str = "/web";
|
||||||
pub const URL_SENSITIVE: &str = "https://cdn.alemi.dev/social/nsfw.png";
|
pub const URL_SENSITIVE: &str = "https://cdn.alemi.dev/social/nsfw.png";
|
||||||
|
pub const DEFAULT_AVATAR_URL: &str = "https://cdn.alemi.dev/social/gradient.png";
|
||||||
pub const NAME: &str = "μ";
|
pub const NAME: &str = "μ";
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
|
@ -4,7 +4,7 @@ use apb::{ActivityMut, Actor, Base, Object, ObjectMut};
|
||||||
|
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use leptos_router::*;
|
use leptos_router::*;
|
||||||
use crate::prelude::*;
|
use crate::{prelude::*, DEFAULT_AVATAR_URL};
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn AboutPage() -> impl IntoView {
|
pub fn AboutPage() -> impl IntoView {
|
||||||
|
@ -86,8 +86,8 @@ pub fn UserPage(tl: Timeline) -> impl IntoView {
|
||||||
},
|
},
|
||||||
Some(Some(object)) => {
|
Some(Some(object)) => {
|
||||||
let uid = object.id().unwrap_or_default().to_string();
|
let uid = object.id().unwrap_or_default().to_string();
|
||||||
let avatar_url = object.icon().get().map(|x| x.url().id().unwrap_or_default()).unwrap_or_default();
|
let avatar_url = object.icon().get().map(|x| x.url().id().unwrap_or(DEFAULT_AVATAR_URL.into())).unwrap_or(DEFAULT_AVATAR_URL.into());
|
||||||
let background_url = object.image().get().map(|x| x.url().id().unwrap_or_default()).unwrap_or_default();
|
let background_url = object.image().get().map(|x| x.url().id().unwrap_or(DEFAULT_AVATAR_URL.into())).unwrap_or(DEFAULT_AVATAR_URL.into());
|
||||||
let display_name = object.name().unwrap_or_default().to_string();
|
let display_name = object.name().unwrap_or_default().to_string();
|
||||||
let username = object.preferred_username().unwrap_or_default().to_string();
|
let username = object.preferred_username().unwrap_or_default().to_string();
|
||||||
let summary = object.summary().unwrap_or_default().to_string();
|
let summary = object.summary().unwrap_or_default().to_string();
|
||||||
|
|
Loading…
Reference in a new issue