mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Add support for server conversation message
This commit is contained in:
		@@ -8,6 +8,7 @@ import 'package:comunic/lists/users_list.dart';
 | 
			
		||||
import 'package:comunic/models/conversation_message.dart';
 | 
			
		||||
import 'package:comunic/models/new_conversation_message.dart';
 | 
			
		||||
import 'package:comunic/ui/tiles/conversation_message_tile.dart';
 | 
			
		||||
import 'package:comunic/ui/tiles/server_conversation_message_tile.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/safe_state.dart';
 | 
			
		||||
import 'package:comunic/ui/widgets/scroll_watcher.dart';
 | 
			
		||||
import 'package:comunic/utils/files_utils.dart';
 | 
			
		||||
@@ -134,7 +135,7 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
 | 
			
		||||
 | 
			
		||||
      await _applyNewMessages(messages);
 | 
			
		||||
    } catch (e, s) {
 | 
			
		||||
      print("Failed to load messages! $e => $s");
 | 
			
		||||
      debugPrint("Failed to load messages! $e => $s", wrapWidth: 4096);
 | 
			
		||||
      _errorLoading();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -178,7 +179,7 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
 | 
			
		||||
 | 
			
		||||
    //Then get information about users
 | 
			
		||||
    final usersToGet =
 | 
			
		||||
        findMissingFromList(_usersInfo.usersID, messages.getUsersID()).toSet();
 | 
			
		||||
        findMissingFromSet(_usersInfo.usersID.toSet(), messages.getUsersID());
 | 
			
		||||
 | 
			
		||||
    final users = await _usersHelper.getList(usersToGet);
 | 
			
		||||
 | 
			
		||||
@@ -314,14 +315,19 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
 | 
			
		||||
          reverse: true,
 | 
			
		||||
          itemCount: _messages.length,
 | 
			
		||||
          itemBuilder: (c, i) {
 | 
			
		||||
            return ConversationMessageTile(
 | 
			
		||||
              message: _messages.elementAt(i),
 | 
			
		||||
              userInfo: _usersInfo.getUser(_messages[i].userID),
 | 
			
		||||
              isLastMessage: _isLastMessage(i),
 | 
			
		||||
              isFirstMessage: _isFirstMessage(i),
 | 
			
		||||
              onRequestMessageUpdate: _updateMessage,
 | 
			
		||||
              onRequestMessageDelete: _deleteMessage,
 | 
			
		||||
            );
 | 
			
		||||
            return _messages[i].isServerMessage
 | 
			
		||||
                ? ServerConversationMessageTile(
 | 
			
		||||
                    message: _messages[i].serverMessage,
 | 
			
		||||
                    users: _usersInfo,
 | 
			
		||||
                  )
 | 
			
		||||
                : ConversationMessageTile(
 | 
			
		||||
                    message: _messages.elementAt(i),
 | 
			
		||||
                    userInfo: _usersInfo.getUser(_messages[i].userID),
 | 
			
		||||
                    isLastMessage: _isLastMessage(i),
 | 
			
		||||
                    isFirstMessage: _isFirstMessage(i),
 | 
			
		||||
                    onRequestMessageUpdate: _updateMessage,
 | 
			
		||||
                    onRequestMessageDelete: _deleteMessage,
 | 
			
		||||
                  );
 | 
			
		||||
          }),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								lib/ui/tiles/server_conversation_message_tile.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								lib/ui/tiles/server_conversation_message_tile.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
import 'package:comunic/lists/users_list.dart';
 | 
			
		||||
import 'package:comunic/models/conversation_message.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
 | 
			
		||||
/// Server conversation message list
 | 
			
		||||
///
 | 
			
		||||
/// @author Pierre hubert
 | 
			
		||||
 | 
			
		||||
class ServerConversationMessageTile extends StatelessWidget {
 | 
			
		||||
  final ConversationServerMessage message;
 | 
			
		||||
  final UsersList users;
 | 
			
		||||
 | 
			
		||||
  const ServerConversationMessageTile({
 | 
			
		||||
    Key key,
 | 
			
		||||
    @required this.message,
 | 
			
		||||
    @required this.users,
 | 
			
		||||
  })  : assert(message != null),
 | 
			
		||||
        assert(users != null),
 | 
			
		||||
        super(key: key);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return Center(
 | 
			
		||||
      child: Text(
 | 
			
		||||
        message.getText(users),
 | 
			
		||||
        style: TextStyle(
 | 
			
		||||
          fontStyle: FontStyle.italic,
 | 
			
		||||
          fontSize: 12,
 | 
			
		||||
        ),
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user