Revert "Save remote post only when it doesn't exist on local"
This reverts commit 37cbf537bb
.
This commit is contained in:
parent
28380021a7
commit
af5674074d
@ -11,7 +11,7 @@ use plume_common::{
|
|||||||
utils::MediaProcessor,
|
utils::MediaProcessor,
|
||||||
};
|
};
|
||||||
use std::{
|
use std::{
|
||||||
fs,
|
fs::{self, DirBuilder},
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
};
|
};
|
||||||
use tracing::warn;
|
use tracing::warn;
|
||||||
@ -206,6 +206,10 @@ impl Media {
|
|||||||
pub fn from_activity(conn: &DbConn, image: &Image) -> Result<Media> {
|
pub fn from_activity(conn: &DbConn, image: &Image) -> Result<Media> {
|
||||||
let remote_url = image.object_props.url_string().ok()?;
|
let remote_url = image.object_props.url_string().ok()?;
|
||||||
let path = determine_mirror_file_path(&remote_url);
|
let path = determine_mirror_file_path(&remote_url);
|
||||||
|
let parent = path.parent()?;
|
||||||
|
if !parent.is_dir() {
|
||||||
|
DirBuilder::new().recursive(true).create(parent)?;
|
||||||
|
}
|
||||||
|
|
||||||
let mut dest = fs::File::create(path.clone()).ok()?;
|
let mut dest = fs::File::create(path.clone()).ok()?;
|
||||||
if let Some(proxy) = CONFIG.proxy() {
|
if let Some(proxy) = CONFIG.proxy() {
|
||||||
|
@ -637,37 +637,33 @@ impl FromId<DbConn> for Post {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let post = Self::from_db(conn, &article.object_props.id_string()?).or_else(|_| {
|
let cover = article
|
||||||
let cover = article
|
.object_props
|
||||||
.object_props
|
.icon_object::<Image>()
|
||||||
.icon_object::<Image>()
|
.ok()
|
||||||
.ok()
|
.and_then(|img| Media::from_activity(conn, &img).ok().map(|m| m.id));
|
||||||
.and_then(|img| Media::from_activity(conn, &img).ok().map(|m| m.id));
|
|
||||||
|
|
||||||
let title = article.object_props.name_string()?;
|
let title = article.object_props.name_string()?;
|
||||||
Self::insert(
|
let post = Post::insert(
|
||||||
conn,
|
conn,
|
||||||
NewPost {
|
NewPost {
|
||||||
blog_id: blog?.id,
|
blog_id: blog?.id,
|
||||||
slug: title.to_kebab_case(),
|
slug: title.to_kebab_case(),
|
||||||
title,
|
title,
|
||||||
content: SafeString::new(&article.object_props.content_string()?),
|
content: SafeString::new(&article.object_props.content_string()?),
|
||||||
published: true,
|
published: true,
|
||||||
license,
|
license,
|
||||||
// FIXME: This is wrong: with this logic, we may use the display URL as the AP ID. We need two different fields
|
// FIXME: This is wrong: with this logic, we may use the display URL as the AP ID. We need two different fields
|
||||||
ap_url: article
|
ap_url: article
|
||||||
.object_props
|
.object_props
|
||||||
.url_string()
|
.url_string()
|
||||||
.or_else(|_| article.object_props.id_string())?,
|
.or_else(|_| article.object_props.id_string())?,
|
||||||
creation_date: Some(article.object_props.published_utctime()?.naive_utc()),
|
creation_date: Some(article.object_props.published_utctime()?.naive_utc()),
|
||||||
subtitle: article.object_props.summary_string()?,
|
subtitle: article.object_props.summary_string()?,
|
||||||
source: article.ap_object_props.source_object::<Source>()?.content,
|
source: article.ap_object_props.source_object::<Source>()?.content,
|
||||||
cover_id: cover,
|
cover_id: cover,
|
||||||
},
|
},
|
||||||
)
|
)?;
|
||||||
})?;
|
|
||||||
|
|
||||||
// TODO: Update cover image if post's cover changes
|
|
||||||
|
|
||||||
for author in authors {
|
for author in authors {
|
||||||
PostAuthor::insert(
|
PostAuthor::insert(
|
||||||
|
Loading…
Reference in New Issue
Block a user