@@ -10,7 +10,9 @@ import 'package:pot_g/app/modules/chat/domain/repositories/chat_repository.dart'
1010import 'package:pot_g/app/modules/socket/data/data_sources/websocket.dart' ;
1111import 'package:pot_g/app/modules/socket/data/models/events/pot_event_model.dart' ;
1212import 'package:pot_g/app/modules/socket/data/models/events/send_chat_response_model.dart' ;
13+ import 'package:pot_g/app/modules/socket/data/models/pot_events/archive_v1_event.dart' ;
1314import 'package:pot_g/app/modules/socket/data/models/pot_events/chat_v1_event.dart' ;
15+ import 'package:pot_g/app/modules/socket/data/models/pot_events/create_v1_event.dart' ;
1416import 'package:pot_g/app/modules/socket/data/models/pot_events/popo_chat_v1_event.dart' ;
1517import 'package:pot_g/app/modules/socket/data/models/pot_events/user_in_v1_event.dart' ;
1618import 'package:pot_g/app/modules/socket/data/models/pot_events/user_kick_v1_event.dart' ;
@@ -19,48 +21,72 @@ import 'package:pot_g/app/modules/socket/data/models/requests/send_chat_model.da
1921
2022bool _isChatEvent (PotEventModel e) {
2123 return e is PotEventModel <ChatV1Event > ||
24+ e is PotEventModel <CreateV1Event > ||
2225 e is PotEventModel <UserInV1Event > ||
2326 e is PotEventModel <UserLeaveV1Event > ||
2427 e is PotEventModel <UserKickV1Event > ||
25- e is PotEventModel <PopoChatV1Event >;
28+ e is PotEventModel <PopoChatV1Event > ||
29+ e is PotEventModel <ArchiveV1Event >;
2630}
2731
2832String ? _getRelatedUserId (PotEventModel e) {
2933 return switch (e) {
3034 PotEventModel <ChatV1Event >() => e.data.from,
35+ PotEventModel <CreateV1Event >() => e.data.createdBy,
3136 PotEventModel <UserInV1Event >() => e.data.userPk,
3237 PotEventModel <UserLeaveV1Event >() => e.data.userPk,
3338 PotEventModel <UserKickV1Event >() => e.data.kickedUserPk,
3439 PotEventModel <PopoChatV1Event >() => null ,
40+ PotEventModel <ArchiveV1Event >() => null ,
3541 _ => throw StateError ('Unknown event type' ),
3642 };
3743}
3844
45+ String ? _getAuxRelatedUserId (PotEventModel e) {
46+ return switch (e) {
47+ PotEventModel <UserLeaveV1Event >() => e.data.hostChangedTo,
48+ _ => null ,
49+ };
50+ }
51+
3952Sendable _makeChatEntity (PotEventModel e, PotInfoEntity pot) {
4053 final users = pot.usersInfo.users;
4154 final user = users.firstWhereOrNull ((u) => u.id == _getRelatedUserId (e));
55+ final auxUser = users.firstWhereOrNull (
56+ (u) => u.id == _getAuxRelatedUserId (e),
57+ );
4258 return switch (e) {
4359 PotEventModel <ChatV1Event >() => ChatModel (
4460 message: e.data.content,
4561 user: user! ,
4662 createdAt: e.timestamp,
4763 ),
64+ PotEventModel <CreateV1Event >() => SystemMessageModel (
65+ type: SystemMessageType .created,
66+ relatedUser: user,
67+ createdAt: e.timestamp,
68+ ),
4869 PotEventModel <UserInV1Event >() => SystemMessageModel (
4970 type: SystemMessageType .userIn,
50- relatedUser: user! ,
71+ relatedUser: user,
5172 createdAt: e.timestamp,
5273 ),
5374 PotEventModel <UserLeaveV1Event >() => SystemMessageModel (
5475 type: SystemMessageType .userLeave,
55- relatedUser: user! ,
76+ relatedUser: user,
77+ auxRelatedUser: auxUser,
5678 createdAt: e.timestamp,
5779 ),
5880 PotEventModel <UserKickV1Event >() => SystemMessageModel (
5981 type: SystemMessageType .userKicked,
60- relatedUser: user! ,
82+ relatedUser: user,
6183 createdAt: e.timestamp,
6284 ),
6385 PotEventModel <PopoChatV1Event >() => e.data.toEntity (e.timestamp),
86+ PotEventModel <ArchiveV1Event >() => SystemMessageModel (
87+ type: SystemMessageType .archived,
88+ createdAt: e.timestamp,
89+ ),
6490 _ => throw StateError ('Unknown event type' ),
6591 };
6692}
0 commit comments