From a0eb05c7cea6918d9b53440a1c337c25cc8649f1 Mon Sep 17 00:00:00 2001 From: Mehmedalija Karisik Date: Mon, 24 Feb 2025 02:39:06 +0100 Subject: [PATCH] Implement deep link advanced search results --- app/src/main/AndroidManifest.xml | 14 ++++++++++++++ .../android/navigation/PrimalAppNavigation.kt | 5 +++++ .../android/navigation/deeplinking/DeepLink.kt | 1 + .../navigation/deeplinking/DeepLinkingHandler.kt | 6 ++++++ 4 files changed, 26 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08379fd9d..fe679eae1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,6 +103,20 @@ android:scheme="https" /> + + + + + + + + + diff --git a/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt b/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt index 786c73237..ae964ccdf 100644 --- a/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt +++ b/app/src/main/kotlin/net/primal/android/navigation/PrimalAppNavigation.kt @@ -453,6 +453,11 @@ fun SharedTransitionScope.PrimalAppNavigation() { navController.navigateToArticleDetails(deepLink.naddr) } + is DeepLink.AdvancedSearch -> { + navController.popBackStack() + navController.navigateToExploreFeed(feedSpec = deepLink.feedSpec) + } + null -> navController.navigateToHome() } } diff --git a/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLink.kt b/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLink.kt index 10add9826..6916ac921 100644 --- a/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLink.kt +++ b/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLink.kt @@ -8,4 +8,5 @@ sealed class DeepLink { data class Note(val noteId: String) : DeepLink() data class Article(val naddr: String) : DeepLink() data class PrimalNWC(val primalWalletNwc: PrimalWalletNwc) : DeepLink() + data class AdvancedSearch(val feedSpec: String) : DeepLink() } diff --git a/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLinkingHandler.kt b/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLinkingHandler.kt index c01334b8b..3acb2385c 100644 --- a/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLinkingHandler.kt +++ b/app/src/main/kotlin/net/primal/android/navigation/deeplinking/DeepLinkingHandler.kt @@ -10,6 +10,7 @@ import net.primal.android.user.domain.parseNWCUrl private val PRIMAL_NOTE_REGEX = Regex("https://.*primal.net/e/") private val PRIMAL_ARTICLE_REGEX = Regex("https://.*primal.net/a/") private val PRIMAL_PROFILE_REGEX = Regex("https://.*primal.net/p/") +private val PRIMAL_ADVANCED_SEARCH = Regex("https://.*primal.net/asearch/") private const val NOSTR_WALLET_CONNECT_SCHEMA = "nostr+walletconnect://" private const val NOSTR_WALLET_CONNECT_ALT_SCHEMA = "nostrwalletconnect://" @@ -34,6 +35,11 @@ fun String.parseDeepLinkOrNull(): DeepLink? = unknownArticleIdentifier.let { DeepLink.Article(it) } } + PRIMAL_ADVANCED_SEARCH.containsMatchIn(this) -> { + val unknownArticleIdentifier = PRIMAL_ADVANCED_SEARCH.replace(this, "") + unknownArticleIdentifier.let { DeepLink.AdvancedSearch(it) } + } + isNostrWalletConnectSchemaAndUrl() -> runCatching { DeepLink.NostrWalletConnect(nwc = this.parseNWCUrl())