From 6b2c48972cd0d70fec89bbf77947fdec883c7d7a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 20 Sep 2023 11:09:21 +0200 Subject: [PATCH] Avoid code duplication --- .../features/call/CallIntentDataParser.kt | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/features/call/src/main/kotlin/io/element/android/features/call/CallIntentDataParser.kt b/features/call/src/main/kotlin/io/element/android/features/call/CallIntentDataParser.kt index 9237087e2b..91cce30ed3 100644 --- a/features/call/src/main/kotlin/io/element/android/features/call/CallIntentDataParser.kt +++ b/features/call/src/main/kotlin/io/element/android/features/call/CallIntentDataParser.kt @@ -32,25 +32,24 @@ class CallIntentDataParser @Inject constructor() { scheme == "element" && parsedUrl.host == "call" -> { // We use this custom scheme to load arbitrary URLs for other instances of Element Call, // so we can only verify it's an HTTP/HTTPs URL with a non-empty host - parsedUrl.getQueryParameter("url") - ?.let { URLDecoder.decode(it, "utf-8") } - ?.takeIf { - val internalUri = Uri.parse(it) - internalUri.scheme in validHttpSchemes && !internalUri.host.isNullOrBlank() - } + parsedUrl.getUrlParameter() } scheme == "io.element.call" && parsedUrl.host == null -> { // We use this custom scheme to load arbitrary URLs for other instances of Element Call, // so we can only verify it's an HTTP/HTTPs URL with a non-empty host - parsedUrl.getQueryParameter("url") - ?.let { URLDecoder.decode(it, "utf-8") } - ?.takeIf { - val internalUri = Uri.parse(it) - internalUri.scheme in validHttpSchemes && !internalUri.host.isNullOrBlank() - } + parsedUrl.getUrlParameter() } // This should never be possible, but we still need to take into account the possibility else -> null } } + + private fun Uri.getUrlParameter(): String? { + return getQueryParameter("url") + ?.let { URLDecoder.decode(it, "utf-8") } + ?.takeIf { + val internalUri = Uri.parse(it) + internalUri.scheme in validHttpSchemes && !internalUri.host.isNullOrBlank() + } + } }