@@ -2,14 +2,26 @@ package io.branch.branchlinksimulator
22
33import android.app.Application
44import android.content.Context
5+ import android.util.Log
56import io.branch.referral.Branch
7+ import kotlinx.coroutines.CompletableDeferred
68import java.util.UUID
79
10+ import kotlinx.coroutines.CoroutineScope
11+ import kotlinx.coroutines.Dispatchers
12+ import kotlinx.coroutines.SupervisorJob
13+ import kotlinx.coroutines.launch
14+ import kotlinx.coroutines.withContext
15+
816class BranchLinkSimulatorApplication : Application () {
917 lateinit var currentConfig: ApiConfiguration
1018 lateinit var roundTripStore: RoundTripStore
1119 private set
1220
21+ private val applicationJob = SupervisorJob ()
22+ val applicationScope = CoroutineScope (Dispatchers .Main + applicationJob)
23+ val branchInitializationSignal = CompletableDeferred <Unit >()
24+
1325 override fun onCreate () {
1426 super .onCreate()
1527
@@ -21,7 +33,7 @@ class BranchLinkSimulatorApplication: Application() {
2133 roundTripStore = RoundTripStore (this )
2234 Branch .enableLogging(roundTripStore)
2335 // Branch object initialization
24- Branch .getAutoInstance(this , currentConfig.branchKey)
36+ // Branch.getAutoInstance(this, currentConfig.branchKey)
2537
2638 // Retrieve or create the bls_session_id
2739 val sharedPreferences = getSharedPreferences(" branch_session_prefs" , Context .MODE_PRIVATE )
@@ -30,8 +42,28 @@ class BranchLinkSimulatorApplication: Application() {
3042 sharedPreferences.edit().putString(" bls_session_id" , newId).apply ()
3143 newId
3244 }
45+ Log .d(" AppScopeTest" , " Application Fired launching coroutine" )
46+ applicationScope.launch {
47+ Log .e(" AppScopeTest" , " Coroutine Successfully fired" )
48+ setupBranchInstance(this @BranchLinkSimulatorApplication, currentConfig.branchKey)
49+
50+ withContext(Dispatchers .Main ) {
3351
34- // Set the bls_session_id in Branch request metadata
35- Branch .getInstance().setRequestMetadata(" bls_session_id" , blsSessionId)
52+ // Set the bls_session_id in Branch request metadata
53+ Branch .getInstance().setRequestMetadata(" bls_session_id" , blsSessionId)
54+ }
55+ }
56+ }
57+
58+ override fun onTerminate () {
59+ super .onTerminate()
60+ applicationJob.cancel()
61+ }
62+
63+ suspend fun setupBranchInstance (context : Context , branchKey : String ) {
64+ withContext(Dispatchers .IO ) {
65+ Branch .getAutoInstance(context, branchKey)
66+ }
67+ branchInitializationSignal.complete(Unit )
3668 }
3769}
0 commit comments