import 'package:freezed_annotation/freezed_annotation.dart'; part 'chat_room_preview_model.freezed.dart'; part 'chat_room_preview_model.g.dart'; @freezed class ChatRoomPreviewModel with _$ChatRoomPreviewModel { const factory ChatRoomPreviewModel({ @JsonKey(name: "chatRooms") required List chatRooms, }) = _ChatRoomPreviewModel; factory ChatRoomPreviewModel.fromJson(Map json) => _$ChatRoomPreviewModelFromJson(json); } @freezed class ChatRoom with _$ChatRoom { const factory ChatRoom({ @JsonKey(name: "id") required String id, @JsonKey(name: "room_name") required String roomName, @JsonKey(name: "last_message") required dynamic lastMessage, @JsonKey(name: "users") required Users users, }) = _ChatRoom; factory ChatRoom.fromJson(Map json) => _$ChatRoomFromJson(json); } @freezed class LastMessageClass with _$LastMessageClass { const factory LastMessageClass({ @JsonKey(name: "id") required int id, @JsonKey(name: "data") required String data, @JsonKey(name: "media_data") required List mediaData, @JsonKey(name: "author_id") required int authorId, @JsonKey(name: "is_author_message_auth_user") required bool isAuthorMessageAuthUser, @JsonKey(name: "read_by_to_user") required bool readByToUser, @JsonKey(name: "updated_at") required DateTime updatedAt, }) = _LastMessageClass; factory LastMessageClass.fromJson(Map json) => _$LastMessageClassFromJson(json); } @freezed class Users with _$Users { const factory Users({ @JsonKey(name: "from_chat_user") required ChatUser fromChatUser, @JsonKey(name: "to_chat_user") required ChatUser toChatUser, }) = _Users; factory Users.fromJson(Map json) => _$UsersFromJson(json); } @freezed class ChatUser with _$ChatUser { const factory ChatUser({ @JsonKey(name: "id") required int id, @JsonKey(name: "name") required String name, @JsonKey(name: "profile_photo_path") required String? profilePhotoPath, @JsonKey(name: "profile_photo_url") required String profilePhotoUrl, }) = _ChatUser; factory ChatUser.fromJson(Map json) => _$ChatUserFromJson(json); }