refactored room and file sorting to use direct comparators instead of temporary sort strings, removed obsolete 'sort' properties from API models, and improved file list sorting with case-insensitive name comparisons and null-safe date handling

This commit is contained in:
2026-05-17 00:27:17 +02:00
parent e5873f73b9
commit 215911cf29
8 changed files with 27 additions and 77 deletions
@@ -16,26 +16,20 @@ class GetRoomResponse extends ApiResponse {
Map<String, dynamic> toJson() => _$GetRoomResponseToJson(this);
List<GetRoomResponseObject> sortBy({
bool lastActivity = true,
required bool favoritesToTop,
required bool unreadToTop,
}) {
for (var chat in data) {
final buffer = StringBuffer();
if (favoritesToTop) {
buffer.write(chat.isFavorite ? 'b' : 'a');
return data.toList()..sort((a, b) {
if (favoritesToTop && a.isFavorite != b.isFavorite) {
return a.isFavorite ? -1 : 1;
}
if (unreadToTop) {
buffer.write(chat.unreadMessages > 0 ? 'b' : 'a');
final aUnread = a.unreadMessages > 0;
final bUnread = b.unreadMessages > 0;
if (aUnread != bUnread) return aUnread ? -1 : 1;
}
buffer.write(chat.lastActivity);
chat.sort = buffer.toString();
}
return data.toList()..sort((a, b) => b.sort!.compareTo(a.sort!));
return b.lastActivity.compareTo(a.lastActivity);
});
}
}
@@ -71,7 +65,6 @@ class GetRoomResponseObject {
String? status;
String? statusIcon;
String? statusMessage;
String? sort;
GetRoomResponseObject(
this.id,