Fixed sorting on talk chats

This commit is contained in:
2023-07-09 21:44:28 +02:00
parent 2ddaa17a81
commit 5d62f1b863
3 changed files with 16 additions and 11 deletions

View File

@ -15,20 +15,22 @@ class GetRoomResponse extends ApiResponse {
Map<String, dynamic> toJson() => _$GetRoomResponseToJson(this);
List<GetRoomResponseObject> sortBy({bool lastActivity = true, required bool favoritesToTop, required bool unreadToTop}) {
return data.toList()..sort((a, b) {
for (var chat in data) {
final buffer = StringBuffer();
// Unread messages
if(favoritesToTop) {
buffer.write(chat.isFavorite ? "b" : "a");
}
if(unreadToTop) {
int unreadStatus = b.unreadMessages.compareTo(a.unreadMessages);
if(unreadStatus != 0) return unreadStatus;
buffer.write(chat.unreadMessages > 0 ? "b" : "a");
}
// Favorites
if(favoritesToTop) if(a.isFavorite) return -1;
buffer.write(chat.lastActivity);
// Activity
return b.lastActivity.compareTo(a.lastActivity);
});
chat.sort = buffer.toString();
}
return data.toList()..sort((a, b) => b.sort!.compareTo(a.sort!));
}
}
@ -64,6 +66,7 @@ class GetRoomResponseObject {
String? status;
String? statusIcon;
String? statusMessage;
String? sort;
GetRoomResponseObject(
this.id,