mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
Fix voice quality regression
This commit is contained in:
@@ -186,9 +186,11 @@ class ConnectionProvider with ChangeNotifier {
|
||||
Function(Uint8List publicKeyPrefix, Uint8List statusData)? onStatusResponse;
|
||||
Function(Uint8List payload, int snrRaw, int rssiDbm)? onRawDataReceived;
|
||||
Contact? Function(Uint8List contactPublicKey)? resolveContactForDmCallback;
|
||||
bool Function()? canStartAutomaticMessageSyncCallback;
|
||||
|
||||
// Track pending send operations for auto-recovery
|
||||
final Map<String, _PendingSendOperation> _pendingSendOperations = {};
|
||||
bool _pendingAutomaticMessageSync = false;
|
||||
|
||||
ConnectionProvider() {
|
||||
_wireServiceCallbacks(_bleService);
|
||||
@@ -333,6 +335,13 @@ class ConnectionProvider with ChangeNotifier {
|
||||
debugPrint('📥 [Provider] MSG_WAITING ignored during spectrum scan');
|
||||
return;
|
||||
}
|
||||
if (!(canStartAutomaticMessageSyncCallback?.call() ?? true)) {
|
||||
_pendingAutomaticMessageSync = true;
|
||||
debugPrint(
|
||||
'📥 [Provider] MSG_WAITING deferred until connection bootstrap completes',
|
||||
);
|
||||
return;
|
||||
}
|
||||
debugPrint('📥 [Provider] MSG_WAITING - auto-syncing');
|
||||
if (_isSyncingMessages) {
|
||||
_syncRequestedWhileBusy = true;
|
||||
@@ -1894,11 +1903,18 @@ class ConnectionProvider with ChangeNotifier {
|
||||
}
|
||||
|
||||
/// Sync all waiting messages from device
|
||||
Future<int> syncAllMessages() async {
|
||||
Future<int> syncAllMessages({bool force = false}) async {
|
||||
if (_isSpectrumScanActive) {
|
||||
debugPrint('⏸️ [Provider] Message sync skipped during spectrum scan');
|
||||
return 0;
|
||||
}
|
||||
if (!force && !(canStartAutomaticMessageSyncCallback?.call() ?? true)) {
|
||||
_pendingAutomaticMessageSync = true;
|
||||
debugPrint(
|
||||
'⏸️ [Provider] Message sync deferred until connection bootstrap completes',
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
if (_isSyncingMessages) {
|
||||
// Already syncing; avoid overlapping loops
|
||||
_syncRequestedWhileBusy = true;
|
||||
@@ -1914,6 +1930,7 @@ class ConnectionProvider with ChangeNotifier {
|
||||
int totalCount = 0;
|
||||
|
||||
try {
|
||||
_pendingAutomaticMessageSync = false;
|
||||
_isSyncingMessages = true;
|
||||
do {
|
||||
_syncRequestedWhileBusy = false;
|
||||
@@ -2005,6 +2022,12 @@ class ConnectionProvider with ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
bool get hasPendingAutomaticMessageSync => _pendingAutomaticMessageSync;
|
||||
|
||||
void clearPendingAutomaticMessageSync() {
|
||||
_pendingAutomaticMessageSync = false;
|
||||
}
|
||||
|
||||
/// Login to a room or repeater
|
||||
///
|
||||
/// Sends login request with password. Results will be delivered via
|
||||
|
||||
Reference in New Issue
Block a user