1 // Copyright 2015-present 650 Industries. All rights reserved.
2 package host.exp.exponent.kernel.services.linking
3 
4 import android.net.Uri
5 import host.exp.exponent.Constants
6 import host.exp.exponent.kernel.KernelConstants.ExperienceOptions
7 import host.exp.exponent.kernel.KernelProvider
8 
9 class LinkingKernelService {
openURInull10   fun openURI(uri: Uri) {
11     val manifestUrl =
12       if (Constants.isStandaloneApp()) Constants.INITIAL_URL.toString() else uri.toString()
13     KernelProvider.instance
14       .openExperience(ExperienceOptions(manifestUrl, uri.toString(), null))
15   }
16 
canOpenURInull17   fun canOpenURI(uri: Uri): Boolean {
18     val scheme = uri.scheme
19     if (scheme == "exp" || scheme == "exps") {
20       return true
21     }
22     if (Constants.SHELL_APP_SCHEME != null && Constants.SHELL_APP_SCHEME == scheme) {
23       return true
24     }
25     val host = uri.host
26     return host != null && (host == "exp.host" || host == "exp.direct" || host.endsWith("exp.direct"))
27   }
28 }
29