Call wifiStatusTracker.fetchInitialState first

Before set listening to true, otherwise could cause race condition.

Fix: 354500692
Flag: EXEMPT bug fix
Test: manual - check wifi summary
Change-Id: I4160f89fae666ac02b816b7d9a69bac581bbd29e
This commit is contained in:
Chaohui Wang
2024-07-30 13:45:54 +08:00
parent 30b9c3c1ae
commit 0be6705da6

View File

@@ -50,14 +50,20 @@ class WifiStatusRepository(
var wifiStatusTracker: WifiStatusTracker? = null
wifiStatusTracker = wifiStatusTrackerFactory { wifiStatusTracker?.let(::trySend) }
// Fetches initial state first, before set listening to true, otherwise could cause
// race condition.
wifiStatusTracker.fetchInitialState()
trySend(wifiStatusTracker)
context
.broadcastReceiverFlow(INTENT_FILTER)
.onEach { intent -> wifiStatusTracker.handleBroadcast(intent) }
.onEach { intent ->
wifiStatusTracker.handleBroadcast(intent)
trySend(wifiStatusTracker)
}
.launchIn(this)
wifiStatusTracker.setListening(true)
wifiStatusTracker.fetchInitialState()
trySend(wifiStatusTracker)
awaitClose { wifiStatusTracker.setListening(false) }
}