diff --git a/src/service/admin/mod.rs b/src/service/admin/mod.rs
index 887c6a6a..45b95fd2 100644
--- a/src/service/admin/mod.rs
+++ b/src/service/admin/mod.rs
@@ -778,8 +778,12 @@ impl Service {
rooms.sort_by_key(|r| r.1);
rooms.reverse();
- let slice_start = page.saturating_sub(1) * PAGE_SIZE;
- let Some(rooms) = rooms.get(slice_start..slice_start + PAGE_SIZE) else {
+ let rooms: Vec<_> = rooms.into_iter()
+ .skip(page.saturating_sub(1) * PAGE_SIZE)
+ .take(PAGE_SIZE)
+ .collect();
+
+ if rooms.is_empty() {
return Ok(RoomMessageEventContent::text_plain("No more rooms."));
};
@@ -792,7 +796,7 @@ impl Service {
.join("\n")
);
let output_html = format!(
- "
Room list - page {page}\nid | \tname | \tmembers |
\n{}
",
+ "Room list - page {page}\nid | \tmembers | \tname |
\n{}
",
rooms
.iter()
.map(|(id, members, name)| format!(
@@ -916,9 +920,13 @@ impl Service {
.collect::>();
rooms.sort_by_key(|r| r.1);
rooms.reverse();
+
+ let rooms: Vec<_> = rooms.into_iter()
+ .skip(page.saturating_sub(1) * PAGE_SIZE)
+ .take(PAGE_SIZE)
+ .collect();
- let slice_start = page.saturating_sub(1) * PAGE_SIZE;
- let Some(rooms) = rooms.get(slice_start..slice_start + PAGE_SIZE) else {
+ if rooms.is_empty() {
return Ok(RoomMessageEventContent::text_plain("No more rooms."));
};
@@ -931,7 +939,7 @@ impl Service {
.join("\n")
);
let output_html = format!(
- "Room directory - page {page}\nid | \tname | \tmembers |
\n{}
",
+ "Room directory - page {page}\nid | \tmembers | \tname |
\n{}
",
rooms
.iter()
.map(|(id, members, name)| format!(