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:
@@ -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,
|
||||
|
||||
@@ -60,7 +60,7 @@ GetRoomResponseObject _$GetRoomResponseObjectFromJson(
|
||||
json['status'] as String?,
|
||||
json['statusIcon'] as String?,
|
||||
json['statusMessage'] as String?,
|
||||
)..sort = json['sort'] as String?;
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetRoomResponseObjectToJson(
|
||||
GetRoomResponseObject instance,
|
||||
@@ -97,7 +97,6 @@ Map<String, dynamic> _$GetRoomResponseObjectToJson(
|
||||
'status': instance.status,
|
||||
'statusIcon': instance.statusIcon,
|
||||
'statusMessage': instance.statusMessage,
|
||||
'sort': instance.sort,
|
||||
};
|
||||
|
||||
const _$GetRoomResponseObjectConversationTypeEnumMap = {
|
||||
|
||||
Reference in New Issue
Block a user