Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit cfab28be authored by DaVinci9196's avatar DaVinci9196 Committed by GitHub
Browse files

DynamicLink: Optimized the code (#2908)



Co-authored-by: default avatarMarvin W <git@larma.de>
parent 16223d0f
Loading
Loading
Loading
Loading
+28 −30
Original line number Original line Diff line number Diff line
@@ -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) {
@@ -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