diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 8216b93..bf523b3 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -147,7 +147,7 @@ class MqttCore { } } - _publishText(String topic, String text) { + bool _publishText(String topic, String text, {bool enqueueOnError = true}) { try { var buffer = Uint8Buffer(); buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(text)) as Iterable); @@ -157,9 +157,15 @@ class MqttCore { _mqttClient!.publishMessage(messageTopic, MqttQos.exactlyOnce, buffer); Util.logInfo("message\n$text\nsend to $messageTopic"); + + return true; } catch (ex) { - _enqueueMessage(topic, text); + if (enqueueOnError) { + _enqueueMessage(topic, text); + } } + + return false; } void _setupMqtt() async { @@ -522,11 +528,11 @@ class MqttCore { if (enqueuedMessages.isNotEmpty) { for (var enqueuedMessage in enqueuedMessages) { try { - _publishText(enqueuedMessage.topic, enqueuedMessage.payload); - - await MyApp.isarInstance.writeTxn(() async { - await MyApp.isarInstance.enqueuedMessages.delete(enqueuedMessage.id); - }); + if (_publishText(enqueuedMessage.topic, enqueuedMessage.payload, enqueueOnError: false)) { + await MyApp.isarInstance.writeTxn(() async { + await MyApp.isarInstance.enqueuedMessages.delete(enqueuedMessage.id); + }); + } } catch (ex) { Util.logInfo("resend enqueued message failed: $ex"); }