diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/src/ui/node.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/server/src/ui/node.rs b/server/src/ui/node.rs index 7c3bb22..4d1fab1 100644 --- a/server/src/ui/node.rs +++ b/server/src/ui/node.rs @@ -24,15 +24,23 @@ pub fn r_node(ri: RequestInfo<'_>, slug: &str) -> MyResult<UiResponse> { filter: Filter::Match(Path(vec![NO_SLUG.0]), slug.as_bytes().to_vec()), sort: Sort::None, })? { - node = Some(Object::EMPTY.insert(NKU_NODE, txn.get(row)?.unwrap().as_object())); + let n = txn.get(row)?.unwrap(); + node = Some(Object::EMPTY.insert(NKU_NODE, n.as_object())); + + let (order, path) = + if n.as_object().get(NO_KIND).unwrap_or(KIND_COLLECTION) == KIND_CHANNEL { + (SortOrder::Descending, Path(vec![NO_RELEASEDATE.0])) + } else { + (SortOrder::Ascending, Path(vec![NO_TITLE.0])) + }; let rows = txn .query(Query { sort: Sort::Value(ValueSort { multi: MultiBehaviour::First, offset: None, - order: SortOrder::Ascending, - path: Path(vec![NO_TITLE.0]), + order, + path, }), filter: Filter::Match(Path(vec![NO_PARENT.0]), row.to_be_bytes().to_vec()), })? |