fetchMessagesFromGrpc1 function

ThunkAction<ChatState> fetchMessagesFromGrpc1(
  1. String conversationId
)

Implementation

ThunkAction<ChatState> fetchMessagesFromGrpc1(String conversationId) {
  return (Store<ChatState> store) async {
    store.dispatch(SetLoadingAction(true));
    try {
      // Setup gRPC client
      final channel = ClientChannel(
          connectionServer ,
          port: portServer,
          options: const ChannelOptions(
            credentials: ChannelCredentials.insecure(),
            idleTimeout: null, // 🔓 No idle timeout
          )
      );
      final client = ChatServiceClient(channel);
      if (kDebugMode) {
        print("Start loading message $conversationId" );
      }
      // Make gRPC call
      final response = await client.getMessage_Text(GetMessagesRequest()..conversationId = conversationId);
      await Future.delayed(Duration(seconds: 1));
      final List<Message_text> messages = [];
      for (var item in response.message) {
        final msg = Message_text()
          ..messageId = item.messageId
          ..content = item.content
          ..senderId = item.senderId
          ..conversationId = item.conversationId
          ..timestamp = item.timestamp
          ..isRead = item.isRead
          ..editedAt = item.editedAt;
        messages.add(msg);
      }

      if (kDebugMode) {
        print("Converted ${messages.length} messages");
      }
      store.dispatch(LoadMessagesAction(messages));

      await channel.shutdown();
    } catch (e) {
      if (kDebugMode) {
        print("❌ gRPC error: $e");
      }
      // Optionally dispatch error action
    } finally {
      store.dispatch(SetLoadingAction(false));
    }
  };
}