addMessage method
Implementation
void addMessage(Message message) async {
await ConversationRepository().addMessage(message);
final messages = await ConversationRepository()
.getMessagesByConversationUUid(message.conversationId);
messageList.value = messages;
// wait for all the state emit
final completer = Completer();
try {
MessageRepository().postMessage(message, (Message message) {
messageList.value = [...messages, message];
}, (Message message) {
messageList.value = [...messages, message];
}, (Message message) async {
// if streaming is done ,load all the message
ConversationRepository().addMessage(message);
final messages = await ConversationRepository()
.getMessagesByConversationUUid(message.conversationId);
messageList.value = messages;
completer.complete();
});
} catch (e) {
messageList.value = [
...messages,
Message(
conversationId: message.conversationId,
text: e.toString(),
role: Role.assistant)
];
completer.complete();
}
await completer.future;
}