Skip to content

Commit 64f7851

Browse files
Wahid NasriWahid Nasri
Wahid Nasri
authored and
Wahid Nasri
committed
bug fixes
1 parent afaa621 commit 64f7851

File tree

17 files changed

+1868
-31
lines changed

17 files changed

+1868
-31
lines changed
Binary file not shown.

android/app/build/intermediates/flutter/debug/flutter_build.d

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Binary file not shown.

lib/MqttImpl/MqttChatEventsSender.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,14 @@ class MqttChatEventsSender extends ChatEventsSender {
4040
}
4141

4242
@override
43-
void respondToInvitation(String sednderId, bool accept) {
44-
// TODO: implement respondToInvitation
43+
void respondToInvitation(String invitationId, String senderId, bool accept) {
44+
InvitationMessage invitationMessage = InvitationMessage(
45+
id: invitationId,
46+
type: accept ? MessageType.EventInvitationResponseAccept : MessageType.EventInvitationResponseReject,
47+
invitationMessageType: InvitationMessageType.REQUEST_RESPONSE,
48+
sendTime: DateTime.now().millisecondsSinceEpoch);
49+
50+
clientHandler.sendPayload(invitationMessage.toJson().toString(), "personalevents/" + senderId);
4551
}
4652

4753
@override

lib/MqttImpl/MqttClient.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ class MqttClient extends ClientHandler {
3131
_client = MqttServerClient.withPort(
3232
Platform.operatingSystem.toLowerCase() == 'windows'
3333
? 'localhost'
34-
: '172.16.14.99',
35-
//: '192.168.100.11',
34+
//: '172.16.14.99',
35+
: '192.168.100.11',
3636
cid,
3737
1883);
3838
// _client = MqttServerClient.withPort('broker.emqx.io', resource, 1883
@@ -195,6 +195,9 @@ class MqttClient extends ClientHandler {
195195
void joinMyEvents(String myId) {
196196
_client!.subscribe(TopicsNamesGenerator.getPersonalEventsForBareId(myId),
197197
MqttQos.atLeastOnce);
198+
199+
_client!.subscribe(TopicsNamesGenerator.getArchivesRoomsTopic(myId), MqttQos.atLeastOnce);
200+
_client!.subscribe(TopicsNamesGenerator.getArchivesMessagesTopic(myId), MqttQos.atLeastOnce);
198201
}
199202

200203
@override

lib/abstraction/ChatEventsSender.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ abstract class ChatEventsSender {
1010
}
1111

1212
void sendInvitation(String username, String? invitationId);
13-
void respondToInvitation(String sednderId, bool accept);
13+
void respondToInvitation(String invitationId, String senderId, bool accept);
1414
}

lib/abstraction/models/BaseMessage.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ class BaseMessage {
4545

4646
bool isInvitationEvent() {
4747
return type == MessageType.EventInvitationRequest ||
48-
type == MessageType.EventInvitationResponse;
48+
type == MessageType.EventInvitationResponseAccept ||
49+
type == MessageType.EventInvitationResponseReject;
4950
}
5051

5152
bool isChatMarkerEvent() {

lib/abstraction/models/enums/MessageType.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ enum MessageType {
88
ChatContact,
99

1010
EventInvitationRequest,
11-
EventInvitationResponse,
11+
EventInvitationResponseAccept,
12+
EventInvitationResponseReject,
1213

1314
Presence,
1415

lib/db/appdata/AppData.dart

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter_mqtt/abstraction/models/enums/ChatMarker.dart';
22
import 'package:flutter_mqtt/abstraction/models/enums/InvitationMessageType.dart';
3+
import 'package:flutter_mqtt/abstraction/models/enums/MessageType.dart';
34
import 'package:flutter_mqtt/db/appdata/ContactsHandler.dart';
45
import 'package:flutter_mqtt/db/appdata/InvitationsHandler.dart';
56
import 'package:flutter_mqtt/db/appdata/MessageHandler.dart';
@@ -73,16 +74,28 @@ class AppData {
7374
.invitationHandler
7475
.newInvitationsStream()
7576
.listen((invitation) {
76-
MyDatabase.instance()!
77-
.invitationDao
78-
.addInvitation(invitation.toDbInvitation());
77+
if(invitation.type == MessageType.EventInvitationRequest) {
78+
//new invitation request
79+
MyDatabase.instance()!
80+
.invitationDao
81+
.addInvitation(invitation.toDbInvitation());
82+
}
83+
if(invitation.type == MessageType.EventInvitationResponseAccept || invitation.type == MessageType.EventInvitationResponseReject) {
84+
//responded to invitation, update the local record and wait the server to sync the new contact (if accepted)
85+
invitationsHandler.updateInvitationStatus(invitation.id, invitation.type == MessageType.EventInvitationResponseAccept ? "accepted" : "rejected");
86+
}
7987
});
8088

8189
ChatApp.instance()!
8290
.invitationHandler
8391
.invitationUpdatesStream()
8492
.listen((invitation) {
85-
if (invitation.invitationMessageType == InvitationMessageType.INFO) {}
93+
if (invitation.invitationMessageType == InvitationMessageType.INFO) {
94+
invitationsHandler.updateInvitationStatus(invitation.id, "confirmed");
95+
}
96+
else if (invitation.invitationMessageType == InvitationMessageType.ERROR) {
97+
invitationsHandler.deleteInvitation(invitation.id);
98+
}
8699
});
87100
}
88101

@@ -99,5 +112,6 @@ class AppData {
99112
await usersHandler.deleteAll();
100113
await messagesHandler.deleteAll();
101114
await contactsHandler.deleteAll();
115+
invitationsHandler.deleteAll();
102116
}
103117
}

lib/db/appdata/InvitationsHandler.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,28 @@ class InvitationsHandler {
88
Stream<int> getInvitationsCount() {
99
return getInvitations().map((event) => event.length);
1010
}
11+
12+
Future addInvitationRequest(String id) async {
13+
var user = await MyDatabase.instance()!.userDao.getUser();
14+
if (user == null) {
15+
return;
16+
}
17+
DbInvitation invitation = DbInvitation(
18+
id: id,
19+
fromId: user.id,
20+
sendTime: DateTime.now().millisecondsSinceEpoch,
21+
fromName: user.firstName + " " + user.lastName,
22+
incoming: false,
23+
status: "sent");
24+
await MyDatabase.instance()!.invitationDao.addInvitation(invitation);
25+
}
26+
Future updateInvitationStatus(String id, String status){
27+
return MyDatabase.instance()!.invitationDao.updateInvitationStatus(id, status);
28+
}
29+
void deleteInvitation(String id){
30+
MyDatabase.instance()!.invitationDao.deleteInvitation(id);
31+
}
32+
void deleteAll(){
33+
MyDatabase.instance()!.invitationDao.deleteAllInvitations();
34+
}
1135
}

lib/db/appdata/extensions/MessagesExtensions.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ extension InvitationConversions on InvitationMessage {
4343
fromId: fromId!,
4444
fromName: fromName,
4545
fromAvatar: fromAvatar,
46-
sendTime: sendTime);
46+
sendTime: sendTime,
47+
incoming: true,
48+
status: "confirmed");
4749
}
4850
}

lib/db/dao/invitation_dao.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,18 @@ class InvitationDao extends DatabaseAccessor<MyDatabase>
1515
Stream<List<DbInvitation>> getAllInvitations() {
1616
return select(invitations).watch();
1717
}
18+
19+
Future<int> updateInvitationStatus(String id, String status) {
20+
return (update(invitations)..where((t) => t.id.equals(id))).write(
21+
InvitationsCompanion(
22+
status: Value(status),
23+
),
24+
);
25+
}
26+
void deleteInvitation(String id){
27+
(delete(invitations)..where((tbl) => tbl.id.equals(id))).go();
28+
}
29+
void deleteAllInvitations(){
30+
(delete(invitations)).go();
31+
}
1832
}

0 commit comments

Comments
 (0)