From 2c4d5670e55f54617b2c41e003b387fc0b54707e Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 27 Mar 2026 21:51:11 -0400 Subject: [PATCH] sort room list for unread first then recent --- lib/controllers/spaces_controller.dart | 41 ++++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/lib/controllers/spaces_controller.dart b/lib/controllers/spaces_controller.dart index ca217a5..7a503ad 100644 --- a/lib/controllers/spaces_controller.dart +++ b/lib/controllers/spaces_controller.dart @@ -1,3 +1,4 @@ +import "package:collection/collection.dart"; import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:flutter/material.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; @@ -99,15 +100,37 @@ class SpacesController extends Notifier> { .toIList(); return [ - Space(id: "home", title: "Home", icon: Icons.home, children: homeRooms), - Space( - id: "dms", - title: "Direct Messages", - icon: Icons.people, - children: dmRooms, - ), - ...topLevelSpacesList, - ].toIList(); + Space( + id: "home", + title: "Home", + icon: Icons.home, + children: homeRooms, + ), + Space( + id: "dms", + title: "Direct Messages", + icon: Icons.people, + children: dmRooms, + ), + ...topLevelSpacesList, + ] + .map( + (space) => space.copyWith( + children: space.children + .sortedBy( + (element) => + element + .metadata + ?.sortingTimestamp + .millisecondsSinceEpoch ?? + 0, + ) + .sortedBy((room) => room.metadata?.unreadMessages ?? 0) + .reversed + .toIList(), + ), + ) + .toIList(); } static final provider = NotifierProvider>(