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
diff --git a/src/com/android/settings/wifi/repository/WifiStatusRepository.kt b/src/com/android/settings/wifi/repository/WifiStatusRepository.kt
index f97ed49..fe4ba6c 100644
--- a/src/com/android/settings/wifi/repository/WifiStatusRepository.kt
+++ b/src/com/android/settings/wifi/repository/WifiStatusRepository.kt
@@ -50,14 +50,20 @@
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) }
}