forked from alemi/upub
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:
parent
88a6048dc2
commit
0badc71c92
1 changed files with 12 additions and 2 deletions
|
@ -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! {
|
||||||
|
|
Loading…
Reference in a new issue