BrowserLauncher: expose the Component used as a StateFlow
authorDa Risk <da_risk@geekorum.com>
Tue, 08 Aug 2023 15:29:53 -0400
changeset 59 fea78676d18e
parent 58 a788fed29584
child 60 21a779aea8ca
BrowserLauncher: expose the Component used as a StateFlow
geekdroid/src/main/java/com/geekorum/geekdroid/network/BrowserLauncher.kt
--- a/geekdroid/src/main/java/com/geekorum/geekdroid/network/BrowserLauncher.kt	Tue Aug 08 15:29:04 2023 -0400
+++ b/geekdroid/src/main/java/com/geekorum/geekdroid/network/BrowserLauncher.kt	Tue Aug 08 15:29:53 2023 -0400
@@ -35,6 +35,8 @@
 import androidx.browser.customtabs.CustomTabsSession
 import androidx.core.net.toUri
 import androidx.core.os.bundleOf
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
 import javax.inject.Inject
 
 /**
@@ -48,17 +50,21 @@
     private var customTabsClient: CustomTabsClient? = null
     private var customTabsSession: CustomTabsSession? = null
     private var serviceBinded: Boolean = false
+    private val _browserComponentName = MutableStateFlow<ComponentName?>(null)
+    val browserComponent: StateFlow<ComponentName?> = _browserComponentName
 
     private val customTabsConnection = object : CustomTabsServiceConnection() {
         override fun onCustomTabsServiceConnected(name: ComponentName, client: CustomTabsClient) {
             customTabsClient = client
             customTabsClient?.warmup(0)
             customTabsSession = customTabsClient?.newSession(null)
+            _browserComponentName.value = name
         }
 
         override fun onServiceDisconnected(name: ComponentName) {
             customTabsSession = null
             customTabsClient = null
+            _browserComponentName.value = null
         }
     }