mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +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