import 'package:json_annotation/json_annotation.dart'; import '../../../apiResponse.dart'; import '../chat/getChatResponse.dart'; part 'getRoomResponse.g.dart'; @JsonSerializable(explicitToJson: true) class GetRoomResponse extends ApiResponse { Set data; GetRoomResponse(this.data); factory GetRoomResponse.fromJson(Map json) => _$GetRoomResponseFromJson(json); Map toJson() => _$GetRoomResponseToJson(this); List sortByLastActivity() { List sorted = data.toList(); sorted.sort((a, b) => -a.lastActivity.compareTo(b.lastActivity)); return sorted; } } @JsonSerializable(explicitToJson: true) class GetRoomResponseObject { int id; String token; GetRoomResponseObjectConversationType type; String name; String displayName; String description; int participantType; int participantFlags; int readOnly; int listable; int lastPing; String sessionId; bool hasPassword; bool hasCall; int callFlag; bool canStartCall; bool canDeleteConversation; bool canLeaveConversation; int lastActivity; bool isFavorite; GetRoomResponseObjectParticipantNotificationLevel notificationLevel; int unreadMessages; bool unreadMention; bool unreadMentionDirect; int lastReadMessage; int lastCommonReadMessage; GetChatResponseObject lastMessage; String? status; String? statusIcon; String? statusMessage; GetRoomResponseObject( this.id, this.token, this.type, this.name, this.displayName, this.description, this.participantType, this.participantFlags, this.readOnly, this.listable, this.lastPing, this.sessionId, this.hasPassword, this.hasCall, this.callFlag, this.canStartCall, this.canDeleteConversation, this.canLeaveConversation, this.lastActivity, this.isFavorite, this.notificationLevel, this.unreadMessages, this.unreadMention, this.unreadMentionDirect, this.lastReadMessage, this.lastCommonReadMessage, this.lastMessage, this.status, this.statusIcon, this.statusMessage); factory GetRoomResponseObject.fromJson(Map json) => _$GetRoomResponseObjectFromJson(json); Map toJson() => _$GetRoomResponseObjectToJson(this); } enum GetRoomResponseObjectConversationType { @JsonValue(1) oneToOne, @JsonValue(2) group, @JsonValue(3) public, @JsonValue(4) changelog, @JsonValue(5) deleted, } enum GetRoomResponseObjectParticipantNotificationLevel { @JsonValue(0) defaultLevel, @JsonValue(1) alwaysNotify, @JsonValue(2) notifyOnMention, @JsonValue(3) neverNotify, } // @JsonSerializable(explicitToJson: true) // class GetRoomResponseObjectMessage { // int id; // String token; // GetRoomResponseObjectMessageActorType actorType; // String actorId; // String actorDisplayName; // int timestamp; // String message; // String systemMessage; // GetRoomResponseObjectMessageType messageType; // bool isReplyable; // String referenceId; // // // GetRoomResponseObjectMessage( // this.id, // this.token, // this.actorType, // this.actorId, // this.actorDisplayName, // this.timestamp, // this.message, // this.systemMessage, // this.messageType, // this.isReplyable, // this.referenceId); // // factory GetRoomResponseObjectMessage.fromJson(Map json) => _$GetRoomResponseObjectMessageFromJson(json); // Map toJson() => _$GetRoomResponseObjectMessageToJson(this); // } enum GetRoomResponseObjectMessageActorType { @JsonValue("deleted_users") deletedUsers, @JsonValue("users") user, @JsonValue("guests") guest, @JsonValue("bots") bot, @JsonValue("bridged") bridge, } enum GetRoomResponseObjectMessageType { @JsonValue("comment") comment, @JsonValue("comment_deleted") deletedComment, @JsonValue("system") system, @JsonValue("command") command, }