Refactor accounts::views module
This commit is contained in:
parent
3662d1a558
commit
9cd2c26e06
1 changed files with 30 additions and 23 deletions
|
@ -27,7 +27,14 @@ use crate::models::profiles::queries::{
|
||||||
get_profile_by_id,
|
get_profile_by_id,
|
||||||
update_profile,
|
update_profile,
|
||||||
};
|
};
|
||||||
use crate::models::relationships::queries as follows;
|
use crate::models::relationships::queries::{
|
||||||
|
create_follow_request,
|
||||||
|
follow,
|
||||||
|
get_follow_request_by_path,
|
||||||
|
get_relationship,
|
||||||
|
get_relationships,
|
||||||
|
unfollow,
|
||||||
|
};
|
||||||
use crate::models::users::queries::{
|
use crate::models::users::queries::{
|
||||||
is_valid_invite_code,
|
is_valid_invite_code,
|
||||||
create_user,
|
create_user,
|
||||||
|
@ -171,14 +178,14 @@ pub struct RelationshipQueryParams {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/relationships")]
|
#[get("/relationships")]
|
||||||
async fn get_relationships(
|
async fn get_relationships_view(
|
||||||
auth: BearerAuth,
|
auth: BearerAuth,
|
||||||
db_pool: web::Data<Pool>,
|
db_pool: web::Data<Pool>,
|
||||||
query_params: web::Query<RelationshipQueryParams>,
|
query_params: web::Query<RelationshipQueryParams>,
|
||||||
) -> Result<HttpResponse, HttpError> {
|
) -> Result<HttpResponse, HttpError> {
|
||||||
let db_client = &**get_database_client(&db_pool).await?;
|
let db_client = &**get_database_client(&db_pool).await?;
|
||||||
let current_user = get_current_user(db_client, auth.token()).await?;
|
let current_user = get_current_user(db_client, auth.token()).await?;
|
||||||
let relationships = follows::get_relationships(
|
let relationships = get_relationships(
|
||||||
db_client,
|
db_client,
|
||||||
current_user.id,
|
current_user.id,
|
||||||
vec![query_params.into_inner().id],
|
vec![query_params.into_inner().id],
|
||||||
|
@ -187,7 +194,7 @@ async fn get_relationships(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/{account_id}/follow")]
|
#[post("/{account_id}/follow")]
|
||||||
async fn follow(
|
async fn follow_account(
|
||||||
auth: BearerAuth,
|
auth: BearerAuth,
|
||||||
config: web::Data<Config>,
|
config: web::Data<Config>,
|
||||||
db_pool: web::Data<Pool>,
|
db_pool: web::Data<Pool>,
|
||||||
|
@ -195,12 +202,12 @@ async fn follow(
|
||||||
) -> Result<HttpResponse, HttpError> {
|
) -> Result<HttpResponse, HttpError> {
|
||||||
let db_client = &mut **get_database_client(&db_pool).await?;
|
let db_client = &mut **get_database_client(&db_pool).await?;
|
||||||
let current_user = get_current_user(db_client, auth.token()).await?;
|
let current_user = get_current_user(db_client, auth.token()).await?;
|
||||||
let profile = get_profile_by_id(db_client, &account_id).await?;
|
let target = get_profile_by_id(db_client, &account_id).await?;
|
||||||
let maybe_remote_actor = profile.remote_actor()
|
let maybe_remote_actor = target.remote_actor()
|
||||||
.map_err(|_| HttpError::InternalError)?;
|
.map_err(|_| HttpError::InternalError)?;
|
||||||
if let Some(remote_actor) = maybe_remote_actor {
|
if let Some(remote_actor) = maybe_remote_actor {
|
||||||
// Remote follow
|
// Remote follow
|
||||||
let request = follows::create_follow_request(db_client, ¤t_user.id, &profile.id).await?;
|
let request = create_follow_request(db_client, ¤t_user.id, &target.id).await?;
|
||||||
let activity = create_activity_follow(
|
let activity = create_activity_follow(
|
||||||
&config.instance_url(),
|
&config.instance_url(),
|
||||||
¤t_user.profile,
|
¤t_user.profile,
|
||||||
|
@ -209,18 +216,18 @@ async fn follow(
|
||||||
);
|
);
|
||||||
deliver_activity(&config, ¤t_user, activity, vec![remote_actor]);
|
deliver_activity(&config, ¤t_user, activity, vec![remote_actor]);
|
||||||
} else {
|
} else {
|
||||||
follows::follow(db_client, ¤t_user.id, &profile.id).await?;
|
follow(db_client, ¤t_user.id, &target.id).await?;
|
||||||
};
|
};
|
||||||
let relationship = follows::get_relationship(
|
let relationship = get_relationship(
|
||||||
db_client,
|
db_client,
|
||||||
¤t_user.id,
|
¤t_user.id,
|
||||||
&profile.id,
|
&target.id,
|
||||||
).await?;
|
).await?;
|
||||||
Ok(HttpResponse::Ok().json(relationship))
|
Ok(HttpResponse::Ok().json(relationship))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/{account_id}/unfollow")]
|
#[post("/{account_id}/unfollow")]
|
||||||
async fn unfollow(
|
async fn unfollow_account(
|
||||||
auth: BearerAuth,
|
auth: BearerAuth,
|
||||||
config: web::Data<Config>,
|
config: web::Data<Config>,
|
||||||
db_pool: web::Data<Pool>,
|
db_pool: web::Data<Pool>,
|
||||||
|
@ -228,20 +235,20 @@ async fn unfollow(
|
||||||
) -> Result<HttpResponse, HttpError> {
|
) -> Result<HttpResponse, HttpError> {
|
||||||
let db_client = &mut **get_database_client(&db_pool).await?;
|
let db_client = &mut **get_database_client(&db_pool).await?;
|
||||||
let current_user = get_current_user(db_client, auth.token()).await?;
|
let current_user = get_current_user(db_client, auth.token()).await?;
|
||||||
let target_profile = get_profile_by_id(db_client, &account_id).await?;
|
let target = get_profile_by_id(db_client, &account_id).await?;
|
||||||
let maybe_remote_actor = target_profile.remote_actor()
|
let maybe_remote_actor = target.remote_actor()
|
||||||
.map_err(|_| HttpError::InternalError)?;
|
.map_err(|_| HttpError::InternalError)?;
|
||||||
if let Some(remote_actor) = maybe_remote_actor {
|
if let Some(remote_actor) = maybe_remote_actor {
|
||||||
// Remote follow
|
// Remote follow
|
||||||
let follow_request = follows::get_follow_request_by_path(
|
let follow_request = get_follow_request_by_path(
|
||||||
db_client,
|
db_client,
|
||||||
¤t_user.id,
|
¤t_user.id,
|
||||||
&target_profile.id,
|
&target.id,
|
||||||
).await?;
|
).await?;
|
||||||
follows::unfollow(
|
unfollow(
|
||||||
db_client,
|
db_client,
|
||||||
¤t_user.id,
|
¤t_user.id,
|
||||||
&target_profile.id,
|
&target.id,
|
||||||
).await?;
|
).await?;
|
||||||
// Federate
|
// Federate
|
||||||
let activity = create_activity_undo_follow(
|
let activity = create_activity_undo_follow(
|
||||||
|
@ -252,12 +259,12 @@ async fn unfollow(
|
||||||
);
|
);
|
||||||
deliver_activity(&config, ¤t_user, activity, vec![remote_actor]);
|
deliver_activity(&config, ¤t_user, activity, vec![remote_actor]);
|
||||||
} else {
|
} else {
|
||||||
follows::unfollow(db_client, ¤t_user.id, &target_profile.id).await?;
|
unfollow(db_client, ¤t_user.id, &target.id).await?;
|
||||||
};
|
};
|
||||||
let relationship = follows::get_relationship(
|
let relationship = get_relationship(
|
||||||
db_client,
|
db_client,
|
||||||
¤t_user.id,
|
¤t_user.id,
|
||||||
&target_profile.id,
|
&target.id,
|
||||||
).await?;
|
).await?;
|
||||||
Ok(HttpResponse::Ok().json(relationship))
|
Ok(HttpResponse::Ok().json(relationship))
|
||||||
}
|
}
|
||||||
|
@ -301,12 +308,12 @@ pub fn account_api_scope() -> Scope {
|
||||||
web::scope("/api/v1/accounts")
|
web::scope("/api/v1/accounts")
|
||||||
// Routes without account ID
|
// Routes without account ID
|
||||||
.service(create_account)
|
.service(create_account)
|
||||||
.service(get_relationships)
|
.service(get_relationships_view)
|
||||||
.service(verify_credentials)
|
.service(verify_credentials)
|
||||||
.service(update_credentials)
|
.service(update_credentials)
|
||||||
// Routes with account ID
|
// Routes with account ID
|
||||||
.service(get_account)
|
.service(get_account)
|
||||||
.service(follow)
|
.service(follow_account)
|
||||||
.service(unfollow)
|
.service(unfollow_account)
|
||||||
.service(get_account_statuses)
|
.service(get_account_statuses)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue