aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-18 20:52:23 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-18 20:52:23 +0100
commitda20590943b833abcce72bd6d6de475a83d5df07 (patch)
tree2b19c858e605931352a35fb40a7af6fc9a661d42 /server/src
parente1b67c885d5789268cec53ac68479a329fba9c8f (diff)
downloadjellything-da20590943b833abcce72bd6d6de475a83d5df07.tar
jellything-da20590943b833abcce72bd6d6de475a83d5df07.tar.bz2
jellything-da20590943b833abcce72bd6d6de475a83d5df07.tar.zst
reverse credits
Diffstat (limited to 'server/src')
-rw-r--r--server/src/ui/node.rs40
1 files changed, 39 insertions, 1 deletions
diff --git a/server/src/ui/node.rs b/server/src/ui/node.rs
index 0f39213..853a96b 100644
--- a/server/src/ui/node.rs
+++ b/server/src/ui/node.rs
@@ -32,6 +32,7 @@ pub fn r_node(ri: RequestInfo<'_>, slug: &str) -> MyResult<UiResponse> {
page.push(VIEW_NODE_PAGE, nku);
c_children(&mut page, txn, row, &nku)?;
c_credits(&mut page, txn, &nku)?;
+ c_credited(&mut page, txn, row)?;
page_out = page.finish();
}
@@ -108,7 +109,7 @@ fn c_credits(
) -> Result<()> {
let mut list = ObjectBufferBuilder::default();
list.push(NODELIST_DISPLAYSTYLE, NLSTYLE_INLINE);
- list.push(NODELIST_TITLE, "node.people");
+ list.push(NODELIST_TITLE, "node.credits");
if !nku.get(NKU_NODE).unwrap_or_default().has(NO_CREDIT.0) {
return Ok(());
@@ -129,3 +130,40 @@ fn c_credits(
page.push(VIEW_NODE_LIST, list.finish().as_object());
Ok(())
}
+
+fn c_credited(page: &mut ObjectBufferBuilder, txn: &mut dyn Transaction, row: u64) -> Result<()> {
+ let children_rows = txn
+ .query(Query {
+ sort: Sort::Value(ValueSort {
+ multi: MultiBehaviour::First,
+ offset: None,
+ order: SortOrder::Ascending,
+ path: Path(vec![NO_TITLE.0]),
+ }),
+ filter: Filter::All(vec![
+ Filter::Match(Path(vec![NO_VISIBILITY.0]), VISI_VISIBLE.into()),
+ Filter::Match(Path(vec![NO_CREDIT.0, CR_NODE.0]), row.into()),
+ ]),
+ })?
+ .collect::<Result<Vec<_>>>()?;
+
+ if children_rows.is_empty() {
+ return Ok(());
+ }
+
+ let mut list = ObjectBufferBuilder::default();
+ list.push(NODELIST_DISPLAYSTYLE, NLSTYLE_GRID);
+ list.push(NODELIST_TITLE, "node.credited");
+
+ for (row, _) in children_rows {
+ list.push(
+ NODELIST_ITEM,
+ Object::EMPTY
+ .insert(NKU_NODE, txn.get(row)?.unwrap().as_object())
+ .as_object(),
+ );
+ }
+
+ page.push(VIEW_NODE_LIST, list.finish().as_object());
+ Ok(())
+}