Skip to content

Commit 11bba86

Browse files
Wahid NasriWahid Nasri
Wahid Nasri
authored and
Wahid Nasri
committed
fix presence message structure
1 parent 7386e6a commit 11bba86

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

lib/MqttImpl/MqttChatEventsSender.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class MqttChatEventsSender extends ChatEventsSender {
6666

6767
@override
6868
void sendPresence(PresenceType presenceType, String myId) {
69-
PresenceMessage presenceMessage = PresenceMessage(id: Uuid().v4(), type: presenceType, fromId: myId);
69+
PresenceMessage presenceMessage = PresenceMessage(id: Uuid().v4(), type: MessageType.Presence, presenceType: presenceType, fromId: myId);
7070
String payload = presenceMessage.toJson();
7171
clientHandler.sendPayload(payload, "presence/" + myId);
7272
}

lib/MqttImpl/MqttOnlineReader.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ class MqttOnlineReader extends MessageOnlineReaderHandler {
2929
return;
3030
}
3131
Map<String, dynamic> payloadMap = jsonDecode(payload);
32-
BaseMessage baseMsg = BaseMessage.fromJson(payloadMap);
3332

3433
if (topic.toLowerCase().startsWith("messages/")) {
3534
ChatMessage chatMessage = ChatMessage.fromJson(payload);
@@ -38,6 +37,7 @@ class MqttOnlineReader extends MessageOnlineReaderHandler {
3837
PresenceMessage pMsg = PresenceMessage.fromJson(payload);
3938
_presenceController.add(pMsg);
4039
} else if (topic.toLowerCase().startsWith("events/")) {
40+
BaseMessage baseMsg = BaseMessage.fromJson(payloadMap);
4141
//handle rooms events
4242
//String roomId = topic.toLowerCase().split("/")[1];
4343
if (baseMsg.isChatMarkerEvent()) {

lib/abstraction/models/PresenceMesssage.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import 'dart:convert';
22

33
import 'package:flutter/foundation.dart';
4+
import 'package:flutter_mqtt/abstraction/models/enums/MessageType.dart';
45

56
import 'enums/PresenceType.dart';
67

78
class PresenceMessage {
89
late String id;
9-
late PresenceType type;
10+
late PresenceType presenceType;
11+
late MessageType type;
1012
String? fromId;
1113
String? fromName;
1214
PresenceMessage({
1315
required this.id,
16+
required this.presenceType,
1417
required this.type,
1518
this.fromId,
1619
this.fromName,
@@ -22,6 +25,9 @@ class PresenceMessage {
2225
'type': type
2326
.toString()
2427
.substring(type.toString().toString().indexOf('.') + 1),
28+
'presenceType': presenceType
29+
.toString()
30+
.substring(presenceType.toString().toString().indexOf('.') + 1),
2531
'fromId': fromId,
2632
'fromName': fromName,
2733
};
@@ -30,7 +36,10 @@ class PresenceMessage {
3036
factory PresenceMessage.fromMap(Map<String, dynamic> map) {
3137
return PresenceMessage(
3238
id: map['id'],
33-
type: PresenceType.values
39+
presenceType: PresenceType.values
40+
.where((e) => describeEnum(e) == map['presenceType'])
41+
.first,
42+
type: MessageType.values
3443
.where((e) => describeEnum(e) == map['type'])
3544
.first,
3645
fromId: map['fromId'],

lib/ui/screens/chatting/chat_db_pages.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ class _ChatUIPageState extends State<ChatUIDBPage> {
227227
padding: const EdgeInsets.only(right: 10),
228228
child: Hero(
229229
tag: "avatar_" + widget.contactChat.id,
230-
child: ContactAvatar(chat: widget.contactChat, radius: 15,),
230+
child: ContactAvatar(chat: widget.contactChat, radius: 15, borderWidth: 1,borderColor: Colors.grey),//fixme: use color for presence
231231
),
232232
),
233233
Column(

lib/ui/screens/details/contact_page.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ class _ContactDetailsPageState extends State<ContactDetailsPage> {
4040
chat:
4141
widget.contactChat,
4242
radius: 100,
43+
borderWidth: widget.contactChat.isGroup! ? 0 : 5,
44+
borderColor: Colors.grey,//fixme: use color for presence
4345
),
4446
),
4547
),

0 commit comments

Comments
 (0)