Added option to sort unread chats to top

This commit is contained in:
2023-06-07 18:22:15 +02:00
parent b94a3d33e9
commit f8ac83a296
6 changed files with 36 additions and 9 deletions

View File

@ -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);
});
}
}