feat(chat, feed): add images, chat search, likes reply to comment

This commit is contained in:
mso7nueh
2024-08-21 16:24:53 +03:00
parent 892fdbebb8
commit 8349778e48
24 changed files with 2213 additions and 445 deletions

View File

@@ -0,0 +1,62 @@
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<ChatRoom> chatRooms,
}) = _ChatRoomPreviewModel;
factory ChatRoomPreviewModel.fromJson(Map<String, dynamic> 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<String, dynamic> 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<dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) => _$ChatUserFromJson(json);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'chat_room_preview_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
_$ChatRoomPreviewModelImpl _$$ChatRoomPreviewModelImplFromJson(
Map<String, dynamic> json) =>
_$ChatRoomPreviewModelImpl(
chatRooms: (json['chatRooms'] as List<dynamic>)
.map((e) => ChatRoom.fromJson(e as Map<String, dynamic>))
.toList(),
);
Map<String, dynamic> _$$ChatRoomPreviewModelImplToJson(
_$ChatRoomPreviewModelImpl instance) =>
<String, dynamic>{
'chatRooms': instance.chatRooms,
};
_$ChatRoomImpl _$$ChatRoomImplFromJson(Map<String, dynamic> json) =>
_$ChatRoomImpl(
id: json['id'] as String,
roomName: json['room_name'] as String,
lastMessage: json['last_message'],
users: Users.fromJson(json['users'] as Map<String, dynamic>),
);
Map<String, dynamic> _$$ChatRoomImplToJson(_$ChatRoomImpl instance) =>
<String, dynamic>{
'id': instance.id,
'room_name': instance.roomName,
'last_message': instance.lastMessage,
'users': instance.users,
};
_$LastMessageClassImpl _$$LastMessageClassImplFromJson(
Map<String, dynamic> json) =>
_$LastMessageClassImpl(
id: (json['id'] as num).toInt(),
data: json['data'] as String,
mediaData: json['media_data'] as List<dynamic>,
authorId: (json['author_id'] as num).toInt(),
isAuthorMessageAuthUser: json['is_author_message_auth_user'] as bool,
readByToUser: json['read_by_to_user'] as bool,
updatedAt: DateTime.parse(json['updated_at'] as String),
);
Map<String, dynamic> _$$LastMessageClassImplToJson(
_$LastMessageClassImpl instance) =>
<String, dynamic>{
'id': instance.id,
'data': instance.data,
'media_data': instance.mediaData,
'author_id': instance.authorId,
'is_author_message_auth_user': instance.isAuthorMessageAuthUser,
'read_by_to_user': instance.readByToUser,
'updated_at': instance.updatedAt.toIso8601String(),
};
_$UsersImpl _$$UsersImplFromJson(Map<String, dynamic> json) => _$UsersImpl(
fromChatUser:
ChatUser.fromJson(json['from_chat_user'] as Map<String, dynamic>),
toChatUser:
ChatUser.fromJson(json['to_chat_user'] as Map<String, dynamic>),
);
Map<String, dynamic> _$$UsersImplToJson(_$UsersImpl instance) =>
<String, dynamic>{
'from_chat_user': instance.fromChatUser,
'to_chat_user': instance.toChatUser,
};
_$ChatUserImpl _$$ChatUserImplFromJson(Map<String, dynamic> json) =>
_$ChatUserImpl(
id: (json['id'] as num).toInt(),
name: json['name'] as String,
profilePhotoPath: json['profile_photo_path'] as String?,
profilePhotoUrl: json['profile_photo_url'] as String,
);
Map<String, dynamic> _$$ChatUserImplToJson(_$ChatUserImpl instance) =>
<String, dynamic>{
'id': instance.id,
'name': instance.name,
'profile_photo_path': instance.profilePhotoPath,
'profile_photo_url': instance.profilePhotoUrl,
};