add: custom emojis
fix: don't show reposts of posts from blocked users fix: don't show questions when they're from users you've blocked
This commit is contained in:
parent
9f187039e6
commit
275dd0a1eb
25 changed files with 697 additions and 61 deletions
|
@ -1,5 +1,9 @@
|
|||
use pathbufd::PathBufD;
|
||||
use serde::{Serialize, Deserialize};
|
||||
use tetratto_shared::{snow::Snowflake, unix_epoch_timestamp};
|
||||
use crate::config::Config;
|
||||
use std::fs::{write, exists, remove_file};
|
||||
use super::{Error, Result};
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum MediaType {
|
||||
|
@ -15,6 +19,22 @@ pub enum MediaType {
|
|||
Gif,
|
||||
}
|
||||
|
||||
impl MediaType {
|
||||
pub fn extension(&self) -> &str {
|
||||
match self {
|
||||
Self::Webp => "webp",
|
||||
Self::Avif => "avif",
|
||||
Self::Png => "png",
|
||||
Self::Jpg => "jpg",
|
||||
Self::Gif => "gif",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mime(&self) -> String {
|
||||
format!("image/{}", self.extension())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct MediaUpload {
|
||||
pub id: usize,
|
||||
|
@ -33,6 +53,35 @@ impl MediaUpload {
|
|||
what,
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the path to the fs file for this upload.
|
||||
pub fn path(&self, config: &Config) -> PathBufD {
|
||||
PathBufD::current()
|
||||
.extend(&[config.dirs.media.as_str(), "uploads"])
|
||||
.join(format!("{}.{}", self.id, self.what.extension()))
|
||||
}
|
||||
|
||||
/// Write to this upload in the file system.
|
||||
pub fn write(&self, config: &Config, bytes: &[u8]) -> Result<()> {
|
||||
match write(self.path(config), bytes) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => Err(Error::MiscError(e.to_string())),
|
||||
}
|
||||
}
|
||||
|
||||
/// Delete this upload in the file system.
|
||||
pub fn remove(&self, config: &Config) -> Result<()> {
|
||||
let path = self.path(config);
|
||||
|
||||
if !exists(&path).unwrap() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
match remove_file(path) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => Err(Error::MiscError(e.to_string())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
|
@ -86,7 +135,7 @@ impl CustomEmoji {
|
|||
out = out.replace(
|
||||
&emoji.0,
|
||||
&format!(
|
||||
"<img class=\"emoji\" src=\"/api/v1/communities/{}/emoji/{}\" />",
|
||||
"<img class=\"emoji\" src=\"/api/v1/communities/{}/emojis/{}\" />",
|
||||
emoji.1, emoji.2
|
||||
),
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue