clean up a bunch of exceptions

This commit is contained in:
Christien Rioux 2025-04-17 18:55:43 -04:00
parent c077a0290f
commit bf38c2c44d
21 changed files with 244 additions and 166 deletions

View file

@ -100,8 +100,8 @@ class SingleContactMessagesCubit extends Cubit<SingleContactMessagesState> {
key: _remoteConversationRecordKey.toString(),
fromBuffer: proto.Message.fromBuffer,
closure: _processUnsentMessages,
onError: (e, sp) {
log.error('Exception while processing unsent messages: $e\n$sp\n');
onError: (e, st) {
log.error('Exception while processing unsent messages: $e\n$st\n');
});
// Make crypto
@ -310,14 +310,11 @@ class SingleContactMessagesCubit extends Cubit<SingleContactMessagesState> {
Future<void> _processMessageToSend(
proto.Message message, proto.Message? previousMessage) async {
// Get the previous message if we don't have one
previousMessage ??= await _sentMessagesCubit!.operate((r) async =>
r.length == 0
? null
: await r.getProtobuf(proto.Message.fromBuffer, r.length - 1));
message.id =
await _senderMessageIntegrity.generateMessageId(previousMessage);
// It's possible we had a signature from a previous
// operateAppendEventual attempt, so clear it and make a new message id too
message
..clearSignature()
..id = await _senderMessageIntegrity.generateMessageId(previousMessage);
// Now sign it
await _senderMessageIntegrity.signMessage(
@ -326,26 +323,33 @@ class SingleContactMessagesCubit extends Cubit<SingleContactMessagesState> {
// Async process to send messages in the background
Future<void> _processUnsentMessages(IList<proto.Message> messages) async {
// Go through and assign ids to all the messages in order
proto.Message? previousMessage;
final processedMessages = messages.toList();
for (final message in processedMessages) {
try {
await _processMessageToSend(message, previousMessage);
previousMessage = message;
} on Exception catch (e) {
log.error('Exception processing unsent message: $e');
}
}
// _sendingMessages = messages;
// _renderState();
try {
await _sentMessagesCubit!.operateAppendEventual((writer) =>
writer.addAll(messages.map((m) => m.writeToBuffer()).toList()));
} on Exception catch (e) {
log.error('Exception appending unsent messages: $e');
await _sentMessagesCubit!.operateAppendEventual((writer) async {
// Get the previous message if we have one
var previousMessage = writer.length == 0
? null
: await writer.getProtobuf(
proto.Message.fromBuffer, writer.length - 1);
// Sign all messages
final processedMessages = messages.toList();
for (final message in processedMessages) {
try {
await _processMessageToSend(message, previousMessage);
previousMessage = message;
} on Exception catch (e, st) {
log.error('Exception processing unsent message: $e:\n$st\n');
}
}
final byteMessages = messages.map((m) => m.writeToBuffer()).toList();
return writer.addAll(byteMessages);
});
} on Exception catch (e, st) {
log.error('Exception appending unsent messages: $e:\n$st\n');
}
// _sendingMessages = const IList.empty();