fix(web): attachments without media type show if img

nobody uses the type field and just mark everything as Document ughhh
and so those who mark image as Image and avoid a media_type because the
browser doesnt really need it get displayed as links, so added an ugly
special case
This commit is contained in:
əlemi 2024-05-13 17:09:35 +02:00
parent 88a6048dc2
commit 0badc71c92
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -3,7 +3,7 @@ use std::sync::Arc;
use leptos::*; use leptos::*;
use crate::{prelude::*, URL_SENSITIVE}; use crate::{prelude::*, URL_SENSITIVE};
use apb::{target::Addressed, ActivityMut, Base, Collection, CollectionMut, Object, ObjectMut}; use apb::{target::Addressed, ActivityMut, Base, Collection, CollectionMut, Document, Object, ObjectMut};
#[component] #[component]
pub fn Attachment( pub fn Attachment(
@ -17,12 +17,22 @@ pub fn Attachment(
let media_type = object.media_type() let media_type = object.media_type()
.unwrap_or("image/png") // TODO weird defaulting to png????? .unwrap_or("image/png") // TODO weird defaulting to png?????
.to_string(); .to_string();
let kind = media_type let mut kind = media_type
.split('/') .split('/')
.next() .next()
.unwrap_or("image") .unwrap_or("image")
.to_string(); .to_string();
// TODO in theory we should match on document_type, but mastodon and misskey send all attachments
// as "Documents" regardless of type, so we're forced to ignore the actual AP type and just match
// using media_type, uffff
//
// those who correctly send Image type objects without a media type get shown as links here, this
// is a dirty fix to properly display as images
if kind == "link" && matches!(object.document_type(), Some(apb::DocumentType::Image)) {
kind = "image".to_string();
}
match kind.as_str() { match kind.as_str() {
"image" => "image" =>
view! { view! {