From 1e651e5a60379b5a2456213b7fc679872073aa84 Mon Sep 17 00:00:00 2001 From: Tomas Timinskas Date: Wed, 28 Feb 2024 11:45:15 -0300 Subject: [PATCH 1/2] Fixes to handle jitsi links from within chat view --- .../chat/sphinx/wrapper_common/message/SphinxCallLink.kt | 5 ++++- .../src/main/java/chat/sphinx/wrapper_message/Message.kt | 6 +++++- .../main/java/chat/sphinx/chat_common/ui/ChatViewModel.kt | 4 ++++ .../main/java/chat/sphinx/chat_common/util/SphinxUrlSpan.kt | 6 +++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/sphinx/application/common/wrappers/wrapper-common/src/main/java/chat/sphinx/wrapper_common/message/SphinxCallLink.kt b/sphinx/application/common/wrappers/wrapper-common/src/main/java/chat/sphinx/wrapper_common/message/SphinxCallLink.kt index 165cceaa3f..5834f8476e 100644 --- a/sphinx/application/common/wrappers/wrapper-common/src/main/java/chat/sphinx/wrapper_common/message/SphinxCallLink.kt +++ b/sphinx/application/common/wrappers/wrapper-common/src/main/java/chat/sphinx/wrapper_common/message/SphinxCallLink.kt @@ -15,6 +15,9 @@ inline fun String.toSphinxCallLink(): SphinxCallLink? = inline val String.isValidSphinxCallLink: Boolean get() = isNotEmpty() && matches("^${SphinxCallLink.REGEX}\$".toRegex()) +inline val String.isValidJitsiCallLink: Boolean + get() = isNotEmpty() && startsWith(SphinxCallLink.DEFAULT_CALL_SERVER_URL) + @JvmInline value class SphinxCallLink(val value: String) { @@ -63,7 +66,7 @@ value class SphinxCallLink(val value: String) { } init { - require(value.isValidSphinxCallLink) { + require(value.isValidSphinxCallLink || value.isValidJitsiCallLink) { "Invalid Sphinx Call Link" } } diff --git a/sphinx/application/common/wrappers/wrapper-message/src/main/java/chat/sphinx/wrapper_message/Message.kt b/sphinx/application/common/wrappers/wrapper-message/src/main/java/chat/sphinx/wrapper_message/Message.kt index 8d232c07c7..840d6020ce 100644 --- a/sphinx/application/common/wrappers/wrapper-message/src/main/java/chat/sphinx/wrapper_message/Message.kt +++ b/sphinx/application/common/wrappers/wrapper-message/src/main/java/chat/sphinx/wrapper_message/Message.kt @@ -203,7 +203,11 @@ inline fun Message.retrievePurchaseStatus(): PurchaseStatus? { @Suppress("NOTHING_TO_INLINE") inline fun Message.retrieveSphinxCallLink(): SphinxCallLink? = messageContentDecrypted?.value?.toSphinxCallLink()?.let { - it + if (it.value.split(" ").count() == 1) { + it + } else { + null + } } ?: callLinkMessage?.let { it.link } diff --git a/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/ui/ChatViewModel.kt b/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/ui/ChatViewModel.kt index 792bfefca8..d04bc8e933 100644 --- a/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/ui/ChatViewModel.kt +++ b/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/ui/ChatViewModel.kt @@ -2044,6 +2044,10 @@ abstract class ChatViewModel( handleFeedItemLink(feedItemLink) + } ?: url.toSphinxCallLink()?.let { sphinxCallLink -> + + joinCall(sphinxCallLink, sphinxCallLink.startAudioOnly) + } } diff --git a/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/util/SphinxUrlSpan.kt b/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/util/SphinxUrlSpan.kt index 899158870f..8b6f533987 100644 --- a/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/util/SphinxUrlSpan.kt +++ b/sphinx/screens/chats/chat-common/chat-common/src/main/java/chat/sphinx/chat_common/util/SphinxUrlSpan.kt @@ -6,6 +6,8 @@ import android.view.View import androidx.annotation.ColorInt import chat.sphinx.wrapper_common.feed.isValidFeedItemLink import chat.sphinx.wrapper_common.lightning.* +import chat.sphinx.wrapper_common.message.isValidJitsiCallLink +import chat.sphinx.wrapper_common.message.isValidSphinxCallLink import chat.sphinx.wrapper_common.tribe.isValidTribeJoinLink import java.util.concurrent.atomic.AtomicInteger @@ -14,7 +16,9 @@ inline val String.isSphinxUrl: Boolean isValidLightningNodePubKey || isValidVirtualNodeAddress || isValidTribeJoinLink || - isValidFeedItemLink + isValidFeedItemLink || + isValidSphinxCallLink || + isValidJitsiCallLink open class SphinxUrlSpan( url: String?, From 771818f6a6981deb0e09722877f0b4d267ef6d3d Mon Sep 17 00:00:00 2001 From: Tomas Timinskas Date: Wed, 28 Feb 2024 11:45:29 -0300 Subject: [PATCH 2/2] Target SDK reverted to 33 --- gradle/dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index acb6940806..815d745d31 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -21,7 +21,7 @@ ext.versions = [ 'okhttp' : '4.10.0', 'sqlDelight' : '1.5.4', 'toplAndroid': '2.1.2', - 'targetSdk' : 30 + 'targetSdk' : 33 ] /**