Render non-media PostAttachments (#420)

This commit is contained in:
Michael Manfre 2023-01-15 16:49:04 -05:00 committed by GitHub
parent 9dded19172
commit 06f6257645
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 3 deletions

View file

@ -73,7 +73,11 @@ class PostAttachment(StatorModel):
]
def is_video(self):
return self.mimetype in ["video/webm"]
return self.mimetype in [
"video/mp4",
"video/ogg",
"video/webm",
]
def thumbnail_url(self) -> RelativeAbsoluteUrl:
if self.thumbnail:
@ -89,11 +93,20 @@ class PostAttachment(StatorModel):
def full_url(self):
if self.file:
return RelativeAbsoluteUrl(self.file.url)
else:
if self.is_image():
return ProxyAbsoluteUrl(
f"/proxy/post_attachment/{self.pk}/",
remote_url=self.remote_url,
)
return RelativeAbsoluteUrl(self.remote_url)
@property
def file_display_name(self):
if self.remote_url:
return self.remote_url.rsplit("/", 1)[-1]
if self.file:
return self.file.name
return f"attachment ({self.mimetype})"
### ActivityPub ###

View file

@ -1497,6 +1497,32 @@ form .post {
max-width: 100%;
}
.post .attachments .other {
grid-column: span 2;
padding: 8px;
border: 1px solid var(--color-text-duller);
background: var(--color-bg-menu);
border-radius: 4px;
margin-top: 8px;
word-break: break-all;
}
.post .attachments .other-label {
display: flex;
align-items: center;
}
.post .attachments .other-label > i {
margin-right: 12px;
}
.post .attachments .other:hover {
text-decoration: none;
background: var(--color-bg-main);
color: #FFF;
border-color: var(--color-highlight);
}
.post .actions {
display: flex;
position: relative;

View file

@ -50,11 +50,20 @@
{% elif attachment.is_video %}
<a href="{{ attachment.full_url.relative }}" class="video">
<video muted controls loop>
<source src="{{ attachment.full_url.relative }}">
<source src="{{ attachment.full_url.relative }}" type="{{ attachment.mimetype }}">
</video>
</a>
{% endif %}
{% endfor %}
{% for attachment in post.attachments.all %}
{% if not attachment.is_image and not attachment.is_video %}
<a href="{{ attachment.full_url.relative }}" class="other">
<div class="other-label">
<i class="fa-solid fa-download"></i> {{ attachment.file_display_name }}
</div>
</a>
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>