feat(service): React to messages of type error
This commit is contained in:
parent
f0c6713d76
commit
d59a37f185
@ -777,12 +777,44 @@ class XmppService {
|
||||
&& await GetIt.I.get<RosterService>().isInRoster(conversationJid);
|
||||
}
|
||||
|
||||
/// Handles receiving a message stanza of type error.
|
||||
Future<void> _handleErrorMessage(MessageEvent event) async {
|
||||
final ms = GetIt.I.get<MessageService>();
|
||||
final msg = await ms.getMessageByStanzaId(
|
||||
event.fromJid.toBare().toString(),
|
||||
event.sid,
|
||||
);
|
||||
|
||||
if (msg == null) {
|
||||
_log.warning('Received error for message ${event.sid} we cannot find');
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(PapaTutuWawa): Figure out the error reason
|
||||
var error = unspecifiedError;
|
||||
|
||||
final newMsg = await ms.updateMessage(
|
||||
msg.id,
|
||||
errorType: error,
|
||||
);
|
||||
|
||||
// TODO(PapaTutuWawa): Show a notification for certain error types, i.e. those
|
||||
// that mean that the message could not be delivered.
|
||||
sendEvent(MessageUpdatedEvent(message: newMsg));
|
||||
}
|
||||
|
||||
Future<void> _onMessage(MessageEvent event, { dynamic extra }) async {
|
||||
// The jid this message event is meant for
|
||||
final conversationJid = event.isCarbon
|
||||
? event.toJid.toBare().toString()
|
||||
: event.fromJid.toBare().toString();
|
||||
|
||||
if (event.type == 'error') {
|
||||
await _handleErrorMessage(event);
|
||||
_log.finest('Processed error message. Ending event processing here.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Process the chat state update. Can also be attached to other messages
|
||||
if (event.chatState != null) await _onChatState(event.chatState!, conversationJid);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user