From acd0b92b6cdec4b33576aea8e6e78b79a3b6b381 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 6 May 2024 16:17:09 +0200 Subject: [PATCH] Pretty URL for conversation link Signed-off-by: sowjanyakch --- .../ConversationInfoActivity.kt | 4 ++- .../json/capabilities/CoreCapability.kt | 6 +++-- .../dialog/ConversationsListBottomDialog.kt | 9 ++++++- .../nextcloud/talk/utils/CapabilitiesUtil.kt | 4 +++ .../com/nextcloud/talk/utils/ShareUtils.kt | 25 ++++++++++++++----- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 8a058d1dc..dc285c211 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -206,12 +206,14 @@ class ConversationInfoActivity : if (ConversationUtils.isNoteToSelfConversation(conversation)) { binding.shareConversationButton.visibility = GONE } + val canGeneratePrettyURL = CapabilitiesUtil.canGeneratePrettyURL(conversationUser) binding.shareConversationButton.setOnClickListener { ShareUtils.shareConversationLink( this, conversationUser.baseUrl, conversation?.token, - conversation?.name + conversation?.name, + canGeneratePrettyURL ) } } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt index 3d6e1517d..59f85bc1c 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/CoreCapability.kt @@ -23,8 +23,10 @@ data class CoreCapability( @JsonField(name = ["reference-api"]) var referenceApi: String?, @JsonField(name = ["reference-regex"]) - var referenceRegex: String? + var referenceRegex: String?, + @JsonField(name = ["mod-rewrite-working"]) + var modRewriteWorking: Boolean? ) : Parcelable { // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject' - constructor() : this(null, null, null, null) + constructor() : this(null, null, null, null, null) } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt index ad0a0e97c..a5f8bdbd5 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt @@ -166,7 +166,14 @@ class ConversationsListBottomDialog( } binding.conversationLinkShare.setOnClickListener { - ShareUtils.shareConversationLink(activity, currentUser.baseUrl, conversation.token, conversation.name) + val canGeneratePrettyURL = CapabilitiesUtil.canGeneratePrettyURL(currentUser) + ShareUtils.shareConversationLink( + activity, + currentUser.baseUrl, + conversation.token, + conversation.name, + canGeneratePrettyURL + ) dismiss() } diff --git a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt index a895f160d..c00d48a5e 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt @@ -86,6 +86,10 @@ object CapabilitiesUtil { user.capabilities?.coreCapability?.referenceApi == "true" } + fun canGeneratePrettyURL(user: User): Boolean { + return user.capabilities?.coreCapability?.modRewriteWorking == true + } + // endregion //region SpreedCapabilities diff --git a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt index 619fde434..9e50d741b 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt @@ -6,6 +6,7 @@ */ package com.nextcloud.talk.utils +import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.net.Uri @@ -13,17 +14,29 @@ import com.nextcloud.talk.R object ShareUtils { - fun shareConversationLink(context: Activity, baseUrl: String?, roomToken: String?, conversationName: String?) { + @SuppressLint("StringFormatMatches") + fun shareConversationLink( + context: Activity, + baseUrl: String?, + roomToken: String?, + conversationName: String?, + canGeneratePrettyURL: Boolean + ) { if (baseUrl.isNullOrBlank() || roomToken.isNullOrBlank() || conversationName.isNullOrBlank()) { return } - val uriToShareConversation = Uri.parse(baseUrl) + val uriBuilder = Uri.parse(baseUrl) .buildUpon() - .appendPath("index.php") - .appendPath("call") - .appendPath(roomToken) - .build() + + if (!canGeneratePrettyURL) { + uriBuilder.appendPath("index.php") + } + + uriBuilder.appendPath("call") + uriBuilder.appendPath(roomToken) + + val uriToShareConversation = uriBuilder.build() val shareConversationLink = String.format( context.getString(