Fixed sorting on talk chats
This commit is contained in:
@ -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,
|
||||
|
Reference in New Issue
Block a user