Loading play-services-core/src/main/kotlin/org/microg/gms/firebase/dynamiclinks/DynamicLinksService.kt +28 −30 Original line number Original line Diff line number Diff line Loading @@ -50,23 +50,22 @@ class DynamicLinksServiceImpl(private val context: Context, private val callingP override fun getDynamicLink(callback: IDynamicLinksCallbacks, link: String?) { override fun getDynamicLink(callback: IDynamicLinksCallbacks, link: String?) { Log.d(TAG, "getDynamicLink: callingPackageName: $callingPackageName link: $link") Log.d(TAG, "getDynamicLink: callingPackageName: $callingPackageName link: $link") if (link != null) { lifecycleScope.launchWhenCreated { try { if (link == null) { throw RuntimeException("Missing link") } val linkUri = Uri.parse(link) val linkUri = Uri.parse(link) if ("http" == linkUri.scheme || "https" == linkUri.scheme) { if ("http" == linkUri.scheme || "https" == linkUri.scheme) { lifecycleScope.launchWhenCreated { val response = runCatching { withContext(Dispatchers.IO) { DynamicLinkUtils.requestLinkResponse(link, queue) } }.getOrNull() val response = runCatching { withContext(Dispatchers.IO) { DynamicLinkUtils.requestLinkResponse(link, queue) } }.getOrNull() val data = if (response == null) { ?: throw RuntimeException("requestLinkResponse failed") DynamicLinkData(null, link, 0, 0, null, null) val data = DynamicLinkData(link, response.data_?.intentData, (response.data_?.app?.minAppVersion ?: 0).toInt(), System.currentTimeMillis(), null, null) } else { DynamicLinkData( response.metadata?.info?.url, response.data_?.intentData, (response.data_?.app?.minAppVersion ?: 0).toInt(), System.currentTimeMillis(), null, null ) } Log.d(TAG, "getDynamicLink: $link -> $data") Log.d(TAG, "getDynamicLink: $link -> $data") callback.onStatusDynamicLinkData(Status.SUCCESS, data) callback.onStatusDynamicLinkData(Status.SUCCESS, data) return@launchWhenCreated } } return val deepLink = linkUri.getQueryParameter("link") } if (!deepLink.isNullOrEmpty()) { val packageName = linkUri.getQueryParameter("apn") val packageName = linkUri.getQueryParameter("apn") val amvParameter = linkUri.getQueryParameter("amv") val amvParameter = linkUri.getQueryParameter("amv") if (packageName == null) { if (packageName == null) { Loading @@ -74,20 +73,19 @@ class DynamicLinksServiceImpl(private val context: Context, private val callingP } else if (callingPackageName != packageName) { } else if (callingPackageName != packageName) { throw RuntimeException("Registered package name:$callingPackageName does not match link package name: $packageName") throw RuntimeException("Registered package name:$callingPackageName does not match link package name: $packageName") } } var amv = 0 var amv = amvParameter?.takeIf { it !== "" }?.toInt() ?: 0 if (amvParameter != null && amvParameter !== "") { val data = DynamicLinkData(link, deepLink, amv, 0, null, null) amv = amvParameter.toInt() } val data = DynamicLinkData( null, linkUri.getQueryParameter("link"), amv, 0, null, null ) Log.d(TAG, "getDynamicLink: $link -> $data") Log.d(TAG, "getDynamicLink: $link -> $data") callback.onStatusDynamicLinkData(Status.SUCCESS, data) callback.onStatusDynamicLinkData(Status.SUCCESS, data) } else { return@launchWhenCreated Log.d(TAG, "getDynamicLink: " + null + " -> " + null) } throw RuntimeException("$link is not a valid dynamic link") } catch (e: Exception) { Log.d(TAG, "getDynamicLink: error : ${e.message}") callback.onStatusDynamicLinkData(Status.SUCCESS, null) callback.onStatusDynamicLinkData(Status.SUCCESS, null) } } } } } override fun createShortDynamicLink(callback: IDynamicLinksCallbacks, extras: Bundle) { override fun createShortDynamicLink(callback: IDynamicLinksCallbacks, extras: Bundle) { extras.keySet() // Unparcel extras.keySet() // Unparcel Loading Loading
play-services-core/src/main/kotlin/org/microg/gms/firebase/dynamiclinks/DynamicLinksService.kt +28 −30 Original line number Original line Diff line number Diff line Loading @@ -50,23 +50,22 @@ class DynamicLinksServiceImpl(private val context: Context, private val callingP override fun getDynamicLink(callback: IDynamicLinksCallbacks, link: String?) { override fun getDynamicLink(callback: IDynamicLinksCallbacks, link: String?) { Log.d(TAG, "getDynamicLink: callingPackageName: $callingPackageName link: $link") Log.d(TAG, "getDynamicLink: callingPackageName: $callingPackageName link: $link") if (link != null) { lifecycleScope.launchWhenCreated { try { if (link == null) { throw RuntimeException("Missing link") } val linkUri = Uri.parse(link) val linkUri = Uri.parse(link) if ("http" == linkUri.scheme || "https" == linkUri.scheme) { if ("http" == linkUri.scheme || "https" == linkUri.scheme) { lifecycleScope.launchWhenCreated { val response = runCatching { withContext(Dispatchers.IO) { DynamicLinkUtils.requestLinkResponse(link, queue) } }.getOrNull() val response = runCatching { withContext(Dispatchers.IO) { DynamicLinkUtils.requestLinkResponse(link, queue) } }.getOrNull() val data = if (response == null) { ?: throw RuntimeException("requestLinkResponse failed") DynamicLinkData(null, link, 0, 0, null, null) val data = DynamicLinkData(link, response.data_?.intentData, (response.data_?.app?.minAppVersion ?: 0).toInt(), System.currentTimeMillis(), null, null) } else { DynamicLinkData( response.metadata?.info?.url, response.data_?.intentData, (response.data_?.app?.minAppVersion ?: 0).toInt(), System.currentTimeMillis(), null, null ) } Log.d(TAG, "getDynamicLink: $link -> $data") Log.d(TAG, "getDynamicLink: $link -> $data") callback.onStatusDynamicLinkData(Status.SUCCESS, data) callback.onStatusDynamicLinkData(Status.SUCCESS, data) return@launchWhenCreated } } return val deepLink = linkUri.getQueryParameter("link") } if (!deepLink.isNullOrEmpty()) { val packageName = linkUri.getQueryParameter("apn") val packageName = linkUri.getQueryParameter("apn") val amvParameter = linkUri.getQueryParameter("amv") val amvParameter = linkUri.getQueryParameter("amv") if (packageName == null) { if (packageName == null) { Loading @@ -74,20 +73,19 @@ class DynamicLinksServiceImpl(private val context: Context, private val callingP } else if (callingPackageName != packageName) { } else if (callingPackageName != packageName) { throw RuntimeException("Registered package name:$callingPackageName does not match link package name: $packageName") throw RuntimeException("Registered package name:$callingPackageName does not match link package name: $packageName") } } var amv = 0 var amv = amvParameter?.takeIf { it !== "" }?.toInt() ?: 0 if (amvParameter != null && amvParameter !== "") { val data = DynamicLinkData(link, deepLink, amv, 0, null, null) amv = amvParameter.toInt() } val data = DynamicLinkData( null, linkUri.getQueryParameter("link"), amv, 0, null, null ) Log.d(TAG, "getDynamicLink: $link -> $data") Log.d(TAG, "getDynamicLink: $link -> $data") callback.onStatusDynamicLinkData(Status.SUCCESS, data) callback.onStatusDynamicLinkData(Status.SUCCESS, data) } else { return@launchWhenCreated Log.d(TAG, "getDynamicLink: " + null + " -> " + null) } throw RuntimeException("$link is not a valid dynamic link") } catch (e: Exception) { Log.d(TAG, "getDynamicLink: error : ${e.message}") callback.onStatusDynamicLinkData(Status.SUCCESS, null) callback.onStatusDynamicLinkData(Status.SUCCESS, null) } } } } } override fun createShortDynamicLink(callback: IDynamicLinksCallbacks, extras: Bundle) { override fun createShortDynamicLink(callback: IDynamicLinksCallbacks, extras: Bundle) { extras.keySet() // Unparcel extras.keySet() // Unparcel Loading