1
0
Fork 0
mirror of https://github.com/Nutomic/ibis.git synced 2024-11-29 05:01:10 +00:00
This commit is contained in:
Felix Ableitner 2023-11-28 11:21:52 +01:00
parent 75f2530689
commit 201bba2d4b
4 changed files with 9 additions and 9 deletions

View file

@ -94,7 +94,7 @@ async fn edit_article(
// resolve conflict if any // resolve conflict if any
if let Some(resolve_conflict_id) = &edit_form.resolve_conflict_id { if let Some(resolve_conflict_id) = &edit_form.resolve_conflict_id {
let mut lock = data.conflicts.lock().unwrap(); let mut lock = data.conflicts.lock().unwrap();
if lock.iter().find(|c| &c.id == resolve_conflict_id).is_none() { if !lock.iter().any(|c| &c.id == resolve_conflict_id) {
return Err(anyhow!("invalid resolve conflict"))?; return Err(anyhow!("invalid resolve conflict"))?;
} }
lock.retain(|c| &c.id != resolve_conflict_id); lock.retain(|c| &c.id != resolve_conflict_id);
@ -132,7 +132,7 @@ async fn edit_article(
}; };
let mut lock = data.conflicts.lock().unwrap(); let mut lock = data.conflicts.lock().unwrap();
lock.push(conflict.clone()); lock.push(conflict.clone());
return Ok(Json(Some(conflict))); Ok(Json(Some(conflict)))
} }
} }
} }
@ -142,7 +142,7 @@ async fn submit_article_update(
edit_form: &EditArticleData, edit_form: &EditArticleData,
original_article: &DbArticle, original_article: &DbArticle,
) -> Result<(), Error> { ) -> Result<(), Error> {
let edit = DbEdit::new(&original_article, &edit_form.new_text)?; let edit = DbEdit::new(original_article, &edit_form.new_text)?;
if original_article.local { if original_article.local {
let updated_article = { let updated_article = {
let mut lock = data.articles.lock().unwrap(); let mut lock = data.articles.lock().unwrap();
@ -153,12 +153,12 @@ async fn submit_article_update(
article.clone() article.clone()
}; };
UpdateLocalArticle::send(updated_article, &data).await?; UpdateLocalArticle::send(updated_article, data).await?;
} else { } else {
UpdateRemoteArticle::send( UpdateRemoteArticle::send(
edit, edit,
original_article.instance.dereference(&data).await?, original_article.instance.dereference(data).await?,
&data, data,
) )
.await?; .await?;
} }

View file

@ -1,6 +1,6 @@
use crate::api::Conflict; use crate::api::Conflict;
use crate::federation::objects::article::DbArticle; use crate::federation::objects::article::DbArticle;
use crate::federation::objects::edit::ApubEdit;
use crate::federation::objects::instance::DbInstance; use crate::federation::objects::instance::DbInstance;
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};

View file

@ -65,7 +65,7 @@ impl ActivityHandler for RejectEdit {
async fn receive(self, data: &Data<Self::DataType>) -> Result<(), Self::Error> { async fn receive(self, data: &Data<Self::DataType>) -> Result<(), Self::Error> {
// cant convert this to DbEdit as it tries to apply patch and fails // cant convert this to DbEdit as it tries to apply patch and fails
let mut lock = data.conflicts.lock().unwrap(); let lock = data.conflicts.lock().unwrap();
todo!(); todo!();
//lock.push(self.object); //lock.push(self.object);
Ok(()) Ok(())

View file

@ -29,7 +29,7 @@ pub fn generate_article_version(
if let Some(version) = version { if let Some(version) = version {
let exists = edits.iter().any(|e| &e.version == version); let exists = edits.iter().any(|e| &e.version == version);
if !exists { if !exists {
return Err(anyhow!("Attempting to generate invalid article version"))?; Err(anyhow!("Attempting to generate invalid article version"))?;
} }
} }
for e in edits { for e in edits {