mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 00:05:16 +00:00
Register to conversation updates
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import 'package:comunic/helpers/database/conversation_messages_database_helper.dart';
|
||||
import 'package:comunic/helpers/database/conversations_database_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/helpers/websocket_helper.dart';
|
||||
import 'package:comunic/lists/conversation_messages_list.dart';
|
||||
import 'package:comunic/lists/conversations_list.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
@ -20,6 +21,8 @@ import 'package:meta/meta.dart';
|
||||
enum SendMessageResult { SUCCESS, MESSAGE_REJECTED, FAILED }
|
||||
|
||||
class ConversationsHelper {
|
||||
static final _registeredConversations = Map<int, int>();
|
||||
|
||||
final ConversationsDatabaseHelper _conversationsDatabaseHelper =
|
||||
ConversationsDatabaseHelper();
|
||||
final ConversationMessagesDatabaseHelper _conversationMessagesDatabaseHelper =
|
||||
@ -356,6 +359,29 @@ class ConversationsHelper {
|
||||
return await _conversationMessagesDatabaseHelper.delete(id);
|
||||
}
|
||||
|
||||
/// Register a conversation : ask the server to notify about updates to the
|
||||
/// conversation through WebSocket
|
||||
Future<void> registerConversationEvents(int id) async {
|
||||
if (_registeredConversations.containsKey(id))
|
||||
_registeredConversations[id]++;
|
||||
else {
|
||||
_registeredConversations[id] = 1;
|
||||
await ws("\$main/register_conv", {"convID": id});
|
||||
}
|
||||
}
|
||||
|
||||
/// Un-register to conversation update events
|
||||
Future<void> unregisterConversationEvents(int id) async {
|
||||
if (!_registeredConversations.containsKey(id)) return;
|
||||
|
||||
_registeredConversations[id]--;
|
||||
|
||||
if (_registeredConversations[id] <= 0) {
|
||||
_registeredConversations.remove(id);
|
||||
await ws("\$main/unregister_conv", {"convID": id});
|
||||
}
|
||||
}
|
||||
|
||||
/// Turn an API response into a ConversationMessage object
|
||||
ConversationMessage _apiToConversationMessage({
|
||||
@required int conversationID,
|
||||
|
Reference in New Issue
Block a user