1 // Copyright 2015-present 650 Industries. All rights reserved.
2 package host.exp.exponent.branch
3 
4 import android.app.Activity
5 import android.app.Application
6 import android.content.Context
7 import android.content.pm.PackageManager
8 import android.net.Uri
9 import host.exp.exponent.analytics.EXL
10 import io.branch.referral.Branch
11 
12 object BranchManager {
13   private val TAG = BranchManager::class.java.simpleName
14 
isEnablednull15   fun isEnabled(context: Context): Boolean {
16     try {
17       val ai = context.packageManager.getApplicationInfo(
18         context.packageName,
19         PackageManager.GET_META_DATA
20       )
21       if (ai.metaData != null) {
22         return ai.metaData.getString("io.branch.sdk.BranchKey") != null
23       }
24     } catch (ignore: PackageManager.NameNotFoundException) {
25     }
26     return false
27   }
28 
initializenull29   fun initialize(application: Application) {
30     if (!isEnabled(application)) {
31       return
32     }
33     try {
34       Class.forName("io.branch.referral.Branch")
35       Branch.getAutoInstance(application)
36     } catch (e: ClassNotFoundException) {
37       // expected if Branch is not installed, fail silently
38     }
39   }
40 
handleLinknull41   fun handleLink(activity: Activity, uri: String?, sdkVersion: String?) {
42     if (!isEnabled(activity)) {
43       return
44     }
45     try {
46       val branchModule = Class.forName("io.branch.rnbranch.RNBranchModule")
47       val m = branchModule.getMethod("initSession", Uri::class.java, Activity::class.java)
48       m.invoke(null, Uri.parse(uri), activity)
49     } catch (e: ClassNotFoundException) {
50       // expected if Branch is not installed, fail silently
51     } catch (e: Exception) {
52       EXL.e(TAG, e)
53     }
54   }
55 }
56