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())