From f9a25738cd072f1a167dbc787586dd89a3fba090 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 28 Mar 2023 18:23:41 +0200 Subject: [PATCH] Cleanup link handling in router activity --- .../libretube/ui/activities/RouterActivity.kt | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt index 7c77654fb..d6e4e335d 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt @@ -18,8 +18,8 @@ class RouterActivity : BaseActivity() { // start processing the given text handleSendText(Uri.parse(intent.getStringExtra(Intent.EXTRA_TEXT)!!)) } else if (intent.data != null) { - val uri = intent.data - handleSendText(uri!!) + // link shared as text to the app + handleSendText(intent.data!!) } else { // start app as normal if unknown action, shouldn't be reachable NavigationHelper.restartMainActivity(this) @@ -30,6 +30,8 @@ class RouterActivity : BaseActivity() { * Resolve the uri and return a bundle with the arguments */ private fun resolveType(intent: Intent, uri: Uri): Intent { + val channelNamePaths = listOf("/c/", "/user/") + val videoPaths = listOf("/shorts/", "/embed/", "/v/", "/live/") when { uri.path!!.contains("/channel/") -> { val channelId = uri.path!! @@ -37,10 +39,12 @@ class RouterActivity : BaseActivity() { intent.putExtra(IntentData.channelId, channelId) } - uri.path!!.contains("/c/") || uri.path!!.contains("/user/") -> { - val channelName = uri.path!! - .replace("/c/", "") - .replace("/user/", "") + channelNamePaths.any { uri.path!!.contains(it) } -> { + var channelName = uri.path!! + + channelNamePaths.forEach { + channelName = channelName.replace(it, "") + } intent.putExtra(IntentData.channelName, channelName) } @@ -49,18 +53,17 @@ class RouterActivity : BaseActivity() { intent.putExtra(IntentData.playlistId, playlistId) } - uri.path!!.contains("/shorts/") || - uri.path!!.contains("/embed/") || - uri.path!!.contains("/v/") || - uri.path!!.contains("/live/") - -> { - val videoId = uri.path!! - .replace("/shorts/", "") - .replace("/v/", "") - .replace("/embed/", "") - .replace("/live/", "") + videoPaths.any { uri.path!!.contains(it) } -> { + var videoId = uri.path!! + + videoPaths.forEach { + videoId = videoId.replace(it, "") + } intent.putExtra(IntentData.videoId, videoId) + + uri.getQueryParameter("t") + ?.let { intent.putExtra(IntentData.timeStamp, it.toTimeInSeconds()) } } uri.path!!.contains("/watch") && uri.query != null -> { val videoId = uri.getQueryParameter("v")