mirror of
https://git.asonix.dog/asonix/relay.git
synced 2024-11-22 09:31:07 +00:00
Don't add inbox as connection
This commit is contained in:
parent
a4d70d7e3a
commit
b2904bb1ba
6 changed files with 13 additions and 22 deletions
|
@ -56,13 +56,13 @@ impl ActorCache {
|
||||||
.map(MaybeCached::Fetched)
|
.map(MaybeCached::Fetched)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn follower(&self, actor: Actor) -> Result<(), MyError> {
|
pub(crate) async fn add_connection(&self, actor: Actor) -> Result<(), MyError> {
|
||||||
self.db.add_listener(actor.id.clone()).await?;
|
self.db.add_connection(actor.id.clone()).await?;
|
||||||
self.db.save_actor(actor).await
|
self.db.save_actor(actor).await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn unfollower(&self, actor: &Actor) -> Result<(), MyError> {
|
pub(crate) async fn remove_connection(&self, actor: &Actor) -> Result<(), MyError> {
|
||||||
self.db.remove_listener(actor.id.clone()).await
|
self.db.remove_connection(actor.id.clone()).await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn get_no_cache(
|
pub(crate) async fn get_no_cache(
|
||||||
|
|
|
@ -474,7 +474,7 @@ impl Db {
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn remove_listener(&self, actor_id: Url) -> Result<(), MyError> {
|
pub(crate) async fn remove_connection(&self, actor_id: Url) -> Result<(), MyError> {
|
||||||
self.unblock(move |inner| {
|
self.unblock(move |inner| {
|
||||||
inner
|
inner
|
||||||
.connected_actor_ids
|
.connected_actor_ids
|
||||||
|
@ -485,7 +485,7 @@ impl Db {
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn add_listener(&self, actor_id: Url) -> Result<(), MyError> {
|
pub(crate) async fn add_connection(&self, actor_id: Url) -> Result<(), MyError> {
|
||||||
self.unblock(move |inner| {
|
self.unblock(move |inner| {
|
||||||
inner
|
inner
|
||||||
.connected_actor_ids
|
.connected_actor_ids
|
||||||
|
|
|
@ -15,24 +15,16 @@ use std::{future::Future, pin::Pin};
|
||||||
|
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub(crate) struct Follow {
|
pub(crate) struct Follow {
|
||||||
is_listener: bool,
|
|
||||||
input: AcceptedActivities,
|
input: AcceptedActivities,
|
||||||
actor: Actor,
|
actor: Actor,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Follow {
|
impl Follow {
|
||||||
pub fn new(is_listener: bool, input: AcceptedActivities, actor: Actor) -> Self {
|
pub fn new(input: AcceptedActivities, actor: Actor) -> Self {
|
||||||
Follow {
|
Follow { input, actor }
|
||||||
is_listener,
|
|
||||||
input,
|
|
||||||
actor,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
||||||
if !self.is_listener {
|
|
||||||
state.db.add_listener(self.actor.inbox.clone()).await?;
|
|
||||||
}
|
|
||||||
let my_id = state.config.generate_url(UrlKind::Actor);
|
let my_id = state.config.generate_url(UrlKind::Actor);
|
||||||
|
|
||||||
// if following relay directly, not just following 'public', followback
|
// if following relay directly, not just following 'public', followback
|
||||||
|
@ -45,7 +37,7 @@ impl Follow {
|
||||||
.queue(Deliver::new(self.actor.inbox.clone(), follow)?)?;
|
.queue(Deliver::new(self.actor.inbox.clone(), follow)?)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
state.actors.follower(self.actor.clone()).await?;
|
state.actors.add_connection(self.actor.clone()).await?;
|
||||||
|
|
||||||
let accept = generate_accept_follow(
|
let accept = generate_accept_follow(
|
||||||
&state.config,
|
&state.config,
|
||||||
|
|
|
@ -11,7 +11,7 @@ pub(crate) struct Reject(pub(crate) Actor);
|
||||||
|
|
||||||
impl Reject {
|
impl Reject {
|
||||||
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
||||||
state.actors.unfollower(&self.0).await?;
|
state.actors.remove_connection(&self.0).await?;
|
||||||
|
|
||||||
let my_id = state.config.generate_url(UrlKind::Actor);
|
let my_id = state.config.generate_url(UrlKind::Actor);
|
||||||
let undo = generate_undo_follow(&state.config, &self.0.id, &my_id)?;
|
let undo = generate_undo_follow(&state.config, &self.0.id, &my_id)?;
|
||||||
|
|
|
@ -21,7 +21,7 @@ impl Undo {
|
||||||
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
async fn perform(self, state: JobState) -> Result<(), anyhow::Error> {
|
||||||
let was_following = state.state.db.is_connected(self.actor.id.clone()).await?;
|
let was_following = state.state.db.is_connected(self.actor.id.clone()).await?;
|
||||||
|
|
||||||
state.actors.unfollower(&self.actor).await?;
|
state.actors.remove_connection(&self.actor).await?;
|
||||||
|
|
||||||
if was_following {
|
if was_following {
|
||||||
let my_id = state.config.generate_url(UrlKind::Actor);
|
let my_id = state.config.generate_url(UrlKind::Actor);
|
||||||
|
|
|
@ -66,7 +66,7 @@ pub(crate) async fn route(
|
||||||
ValidTypes::Announce | ValidTypes::Create => {
|
ValidTypes::Announce | ValidTypes::Create => {
|
||||||
handle_announce(&state, &jobs, input, actor).await?
|
handle_announce(&state, &jobs, input, actor).await?
|
||||||
}
|
}
|
||||||
ValidTypes::Follow => handle_follow(&config, &jobs, input, actor, is_connected).await?,
|
ValidTypes::Follow => handle_follow(&config, &jobs, input, actor).await?,
|
||||||
ValidTypes::Delete | ValidTypes::Update => handle_forward(&jobs, input, actor).await?,
|
ValidTypes::Delete | ValidTypes::Update => handle_forward(&jobs, input, actor).await?,
|
||||||
ValidTypes::Undo => handle_undo(&config, &jobs, input, actor, is_connected).await?,
|
ValidTypes::Undo => handle_undo(&config, &jobs, input, actor, is_connected).await?,
|
||||||
};
|
};
|
||||||
|
@ -207,7 +207,6 @@ async fn handle_follow(
|
||||||
jobs: &JobServer,
|
jobs: &JobServer,
|
||||||
input: AcceptedActivities,
|
input: AcceptedActivities,
|
||||||
actor: Actor,
|
actor: Actor,
|
||||||
is_listener: bool,
|
|
||||||
) -> Result<(), MyError> {
|
) -> Result<(), MyError> {
|
||||||
let my_id: Url = config.generate_url(UrlKind::Actor);
|
let my_id: Url = config.generate_url(UrlKind::Actor);
|
||||||
|
|
||||||
|
@ -217,7 +216,7 @@ async fn handle_follow(
|
||||||
)?));
|
)?));
|
||||||
}
|
}
|
||||||
|
|
||||||
jobs.queue(Follow::new(is_listener, input, actor))?;
|
jobs.queue(Follow::new(input, actor))?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue