forked from alemi/upub
fix: replies collection shows all replies
still keep paginated view, to get embedded objects rather than ids
This commit is contained in:
parent
ca83b17681
commit
453fb2a031
1 changed files with 17 additions and 8 deletions
|
@ -1,5 +1,6 @@
|
|||
use apb::{BaseMut, CollectionMut, LD};
|
||||
use axum::extract::{Path, Query, State};
|
||||
use sea_orm::{ColumnTrait, Condition, PaginatorTrait, QueryFilter};
|
||||
use sea_orm::{ColumnTrait, Condition, QueryFilter, QuerySelect, SelectColumns};
|
||||
use upub::{model, Context};
|
||||
|
||||
use crate::{activitypub::{Pagination, TryFetch}, builders::JsonLD, AuthIdentity};
|
||||
|
@ -10,20 +11,28 @@ pub async fn get(
|
|||
AuthIdentity(auth): AuthIdentity,
|
||||
Query(_q): Query<TryFetch>,
|
||||
) -> crate::ApiResult<JsonLD<serde_json::Value>> {
|
||||
let replies_id = upub::url!(ctx, "/objects/{id}/replies");
|
||||
let oid = ctx.oid(&id);
|
||||
|
||||
// if auth.is_local() && q.fetch {
|
||||
// ctx.fetch_thread(&oid).await?;
|
||||
// }
|
||||
|
||||
let count = upub::Query::objects(auth.my_id())
|
||||
let replies_ids = upub::Query::objects(auth.my_id())
|
||||
.filter(model::object::Column::InReplyTo.eq(ctx.oid(&id)))
|
||||
.filter(auth.filter_objects())
|
||||
.filter(model::object::Column::InReplyTo.eq(oid))
|
||||
.count(ctx.db())
|
||||
.select_only()
|
||||
.select_column(model::object::Column::Id)
|
||||
.into_tuple::<String>()
|
||||
.all(ctx.db())
|
||||
.await?;
|
||||
|
||||
crate::builders::collection(&replies_id, Some(count))
|
||||
Ok(JsonLD(
|
||||
apb::new()
|
||||
.set_id(Some(&upub::url!(ctx, "/objects/{id}/replies")))
|
||||
.set_collection_type(Some(apb::CollectionType::Collection))
|
||||
.set_first(apb::Node::link(upub::url!(ctx, "/objects/{id}/replies/page")))
|
||||
.set_total_items(Some(replies_ids.len() as u64))
|
||||
.set_items(apb::Node::links(replies_ids))
|
||||
.ld_context()
|
||||
))
|
||||
}
|
||||
|
||||
pub async fn page(
|
||||
|
|
Loading…
Reference in a new issue