onMessage method

dynamic onMessage(
  1. dynamic data
)

Implementation

onMessage(dynamic data) {
  try {
    if (kDebugMode) {
      print('socket:: data  $data');
    }
    var message = (data['message'] as List)
        .map((d) => Message.fromJson(d))
        .where((element) => element.role == 'assistance')
        .firstOrNull;
    if (kDebugMode) {
      print('socket:: message  $message');
      print('socket:: messageId  ${message?.id}');
    }

    if (message != null && data['replyMode'] == 'auto') {
      var messageExists =
          value.messages?.any((e) => e.id == message.id) ?? false;
      var messages = messageExists
          ? value.messages?.map((e) => e.id == message.id ? message : e)
          : [...?value.messages, message];
      // messages.re
      if (kDebugMode) {
        for (Message item in messages!) {
          print('socket:: ${item.id}');
        }
      }
      // messages.sort
      value = value.copyWith(isLoading: false, messages: messages?.toList());
      Future.delayed(const Duration(milliseconds: 500), () {
        scrollController.jumpTo(scrollController.position.maxScrollExtent);
      });
    }
  } catch (error) {
    if (kDebugMode) {
      print('socket:: error $error');
      print(error);
    }
  }
}