fetchMessagesFromGrpc1 function
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));
}
};
}