Skip to content

Commit 221dbc7

Browse files
Wahid NasriWahid Nasri
Wahid Nasri
authored and
Wahid Nasri
committed
add payload messages
1 parent abbb0f4 commit 221dbc7

File tree

5 files changed

+71
-1
lines changed

5 files changed

+71
-1
lines changed

lib/MqttImpl/MqttMucHandler.dart

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import 'dart:io';
2+
3+
import 'package:flutter_mqtt/abstraction/ClientHandler.dart';
4+
import 'package:flutter_mqtt/abstraction/MucHandler.dart';
5+
import 'package:flutter_mqtt/abstraction/models/ChatMessage.dart';
6+
import 'package:flutter_mqtt/abstraction/models/enums/MessageType.dart';
7+
import 'package:uuid/uuid.dart';
8+
9+
class MqttMucHandler extends MucHandler{
10+
final ClientHandler clientHandler;
11+
12+
MqttMucHandler(this.clientHandler);
13+
@override
14+
void addUsersToGroup(String groupId, List<String> userIds, bool showPreviousHistory) {
15+
ChatMessage msg = ChatMessage(id: groupId, type: MessageType.AddUsersToGroup, text: '', roomId: '', sendTime: 0, additionalFields: userIds);
16+
17+
String topic = "muc/" + groupId;
18+
clientHandler.sendPayload(msg.toMap().toString(), topic);
19+
}
20+
21+
@override
22+
void createGroup(String name, List<String> membersIds, String? password) {
23+
String id = Uuid().v4();
24+
ChatMessage msg = ChatMessage(id: id, type: MessageType.CreateGroup, text: name, roomId: '', sendTime: 0, additionalFields: membersIds);
25+
26+
String topic = "muc/" + id;
27+
clientHandler.sendPayload(msg.toMap().toString(), topic);
28+
}
29+
30+
@override
31+
void removeGroup(String groupId) {
32+
ChatMessage msg = ChatMessage(id: groupId, type: MessageType.RemoveGroup, text: groupId, roomId: '', sendTime: 0);
33+
34+
String topic = "muc/" + groupId;
35+
clientHandler.sendPayload(msg.toMap().toString(), topic);
36+
}
37+
38+
@override
39+
void removeUsersFromGroup(String groupId, List<String> memberIds) {
40+
ChatMessage msg = ChatMessage(id: groupId, type: MessageType.RemoveGroupMembers, text: '', roomId: '', sendTime: 0, additionalFields: memberIds);
41+
42+
String topic = "muc/" + groupId;
43+
clientHandler.sendPayload(msg.toMap().toString(), topic);
44+
45+
}
46+
47+
@override
48+
void updateGroupInfo(String groupId, String newName, File avatar) {
49+
// TODO: implement updateGroupInfo
50+
}
51+
52+
}

lib/abstraction/MucHandler.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import 'dart:io';
2+
3+
abstract class MucHandler{
4+
void createGroup(String name, List<String> members, String? password);
5+
void removeGroup(String groupId);
6+
void addUsersToGroup(String groupId, List<String> userIds, bool showPreviousHistory);
7+
void removeUsersFromGroup(String groupId, List<String> memberIds);
8+
void updateGroupInfo(String groupId, String newName, File avatar);
9+
}

lib/abstraction/models/enums/MessageType.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,10 @@ enum MessageType {
1515

1616
ChatMarker,
1717

18-
Typing
18+
Typing,
19+
20+
CreateGroup,
21+
RemoveGroup,
22+
AddUsersToGroup,
23+
RemoveGroupMembers,
1924
}

lib/global/ChatApp.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import 'package:flutter_mqtt/MqttImpl/MqttChatEventsSender.dart';
44
import 'package:flutter_mqtt/MqttImpl/MqttClient.dart';
55
import 'package:flutter_mqtt/MqttImpl/MqttInvitationHandler.dart';
66
import 'package:flutter_mqtt/MqttImpl/MqttMessageSender.dart';
7+
import 'package:flutter_mqtt/MqttImpl/MqttMucHandler.dart';
78
import 'package:flutter_mqtt/MqttImpl/MqttOnlineReader.dart';
89
import 'package:flutter_mqtt/abstraction/ArchiveHandler.dart';
910
import 'package:flutter_mqtt/abstraction/ChatEventsSender.dart';
1011
import 'package:flutter_mqtt/abstraction/ClientHandler.dart';
1112
import 'package:flutter_mqtt/abstraction/InvitationsHandler.dart';
1213
import 'package:flutter_mqtt/abstraction/MessageOnlineReaderHandler.dart';
1314
import 'package:flutter_mqtt/abstraction/MessageSender.dart';
15+
import 'package:flutter_mqtt/abstraction/MucHandler.dart';
1416

1517
class ChatApp {
1618
static ChatApp? _instance;
@@ -21,6 +23,7 @@ class ChatApp {
2123
late ChatEventsSender eventsSender;
2224
late ArchiveHandler archiveHandler;
2325
late InvitationHandler invitationHandler;
26+
late MucHandler mucHandler;
2427

2528
static ChatApp? instance() {
2629
if (_instance == null) {
@@ -37,6 +40,7 @@ class ChatApp {
3740
eventsSender = MqttChatEventsSender(clientHandler: clientHandler);
3841
archiveHandler = MqttArchiveHandler(clientHandler: clientHandler);
3942
invitationHandler = MqttInvitationHandler(clientHandler);
43+
mucHandler = MqttMucHandler(clientHandler);
4044
}
4145
void disconnect() {
4246
clientHandler.disconnect();

lib/ui/widgets/group_selected_item.dart

Whitespace-only changes.

0 commit comments

Comments
 (0)