From 0be6705da6e53efb6a74a9433de656ab20a435a6 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 30 Jul 2024 13:45:54 +0800 Subject: [PATCH] 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 --- .../settings/wifi/repository/WifiStatusRepository.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/wifi/repository/WifiStatusRepository.kt b/src/com/android/settings/wifi/repository/WifiStatusRepository.kt index f97ed492507..fe4ba6c9035 100644 --- a/src/com/android/settings/wifi/repository/WifiStatusRepository.kt +++ b/src/com/android/settings/wifi/repository/WifiStatusRepository.kt @@ -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) } }