mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-26 06:49:22 +00:00
Handles new messages events
This commit is contained in:
parent
b0be889833
commit
2746623b8d
@ -227,10 +227,7 @@ class ConversationsHelper {
|
||||
ConversationMessagesList list = ConversationMessagesList();
|
||||
response.getArray().forEach((f) {
|
||||
list.add(
|
||||
_apiToConversationMessage(
|
||||
conversationID: conversationID,
|
||||
map: f,
|
||||
),
|
||||
apiToConversationMessage(f),
|
||||
);
|
||||
});
|
||||
|
||||
@ -331,6 +328,11 @@ class ConversationsHelper {
|
||||
return SendMessageResult.SUCCESS;
|
||||
}
|
||||
|
||||
/// Save / Update a message into the database
|
||||
Future<void> saveMessage(ConversationMessage msg) async {
|
||||
await _conversationMessagesDatabaseHelper.insertOrUpdate(msg);
|
||||
}
|
||||
|
||||
/// Update a message content
|
||||
Future<bool> updateMessage(int id, String newContent) async {
|
||||
final response = await APIRequest(
|
||||
@ -383,13 +385,12 @@ class ConversationsHelper {
|
||||
}
|
||||
|
||||
/// Turn an API response into a ConversationMessage object
|
||||
ConversationMessage _apiToConversationMessage({
|
||||
@required int conversationID,
|
||||
@required Map<String, dynamic> map,
|
||||
}) {
|
||||
static ConversationMessage apiToConversationMessage(
|
||||
Map<String, dynamic> map,
|
||||
) {
|
||||
return ConversationMessage(
|
||||
id: map["ID"],
|
||||
conversationID: conversationID,
|
||||
conversationID: map["convID"],
|
||||
userID: map["ID_user"],
|
||||
timeInsert: map["time_insert"],
|
||||
message: DisplayedString(map["message"]),
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:comunic/models/comment.dart';
|
||||
import 'package:comunic/models/conversation_message.dart';
|
||||
import 'package:event_bus/event_bus.dart';
|
||||
|
||||
/// Events helper
|
||||
@ -45,6 +46,13 @@ class DeletedCommentEvent {
|
||||
DeletedCommentEvent(this.commentID);
|
||||
}
|
||||
|
||||
/// New conversation message
|
||||
class NewConversationMessageEvent {
|
||||
final ConversationMessage msg;
|
||||
|
||||
NewConversationMessageEvent(this.msg);
|
||||
}
|
||||
|
||||
|
||||
class EventsHelper {
|
||||
static EventBus _mgr = EventBus();
|
||||
|
@ -2,6 +2,7 @@ import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:comunic/helpers/comments_helper.dart';
|
||||
import 'package:comunic/helpers/conversations_helper.dart';
|
||||
import 'package:comunic/helpers/events_helper.dart';
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/models/config.dart';
|
||||
@ -137,6 +138,12 @@ class WebSocketHelper {
|
||||
EventsHelper.emit(DeletedCommentEvent(msg.data));
|
||||
break;
|
||||
|
||||
// Created new conversation message
|
||||
case "new_conv_message":
|
||||
EventsHelper.emit(NewConversationMessageEvent(
|
||||
ConversationsHelper.apiToConversationMessage(msg.data)));
|
||||
break;
|
||||
|
||||
default:
|
||||
throw Exception("Unknown message type: ${msg.title}");
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:comunic/helpers/conversations_helper.dart';
|
||||
import 'package:comunic/helpers/events_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/lists/conversation_messages_list.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
@ -83,6 +84,11 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
|
||||
|
||||
await _conversationsHelper
|
||||
.registerConversationEvents(widget.conversationID);
|
||||
|
||||
this.listen<NewConversationMessageEvent>((ev) async {
|
||||
await _conversationsHelper.saveMessage(ev.msg);
|
||||
await _applyNewMessages(ConversationMessagesList()..add(ev.msg));
|
||||
});
|
||||
}
|
||||
|
||||
/// Free resources when this conversation widget is no longer required
|
||||
|
Loading…
Reference in New Issue
Block a user