Added option to sort unread chats to top
This commit is contained in:
@ -14,12 +14,21 @@ class GetRoomResponse extends ApiResponse {
|
||||
factory GetRoomResponse.fromJson(Map<String, dynamic> json) => _$GetRoomResponseFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetRoomResponseToJson(this);
|
||||
|
||||
List<GetRoomResponseObject> sortBy({bool lastActivity = true, bool favoritesToTop = false}) {
|
||||
List<GetRoomResponseObject> sorted = data.toList();
|
||||
if(lastActivity) sorted.sort((a, b) => -a.lastActivity.compareTo(b.lastActivity));
|
||||
if(favoritesToTop) sorted.sort((a, b) => b.isFavorite ? 1 : -1);
|
||||
List<GetRoomResponseObject> sortBy({bool lastActivity = true, required bool favoritesToTop, required bool unreadToTop}) {
|
||||
return data.toList()..sort((a, b) {
|
||||
|
||||
return sorted;
|
||||
// Unread messages
|
||||
if(unreadToTop) {
|
||||
int unreadStatus = b.unreadMessages.compareTo(a.unreadMessages);
|
||||
if(unreadStatus != 0) return unreadStatus;
|
||||
}
|
||||
|
||||
// Favorites
|
||||
if(favoritesToTop) if(a.isFavorite) return -1;
|
||||
|
||||
// Activity
|
||||
return b.lastActivity.compareTo(a.lastActivity);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user