From cadb12cd0fd2dab1d71eabe6a1e65b88c263a9ee Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 9 Dec 2024 11:16:43 +0100 Subject: [PATCH] join 1:1 conversation with replacement user Signed-off-by: sowjanyakch --- .../com/nextcloud/talk/chat/ChatActivity.kt | 47 ++++++++++++++++--- .../java/com/nextcloud/talk/utils/ApiUtils.kt | 2 +- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 1690aaac2..9b0d42557 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -51,6 +51,7 @@ import androidx.activity.OnBackPressedCallback import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.view.ContextThemeWrapper +import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import androidx.core.content.PermissionChecker @@ -1126,16 +1127,28 @@ class ChatActivity : } if (uiState.userAbsence.replacementUserDisplayName != null) { - var imageUri = Uri.parse(ApiUtils.getUrlForAvatar(conversationUser?.baseUrl, uiState.userAbsence - .replacementUserId, false)) + var imageUri = Uri.parse( + ApiUtils.getUrlForAvatar( + conversationUser?.baseUrl, + uiState.userAbsence + .replacementUserId, + false + ) + ) if (DisplayUtils.isDarkModeOn(context)) { - imageUri = Uri.parse(ApiUtils.getUrlForAvatarDarkTheme(conversationUser?.baseUrl, uiState - .userAbsence - .replacementUserId, false)) + imageUri = Uri.parse( + ApiUtils.getUrlForAvatarDarkTheme( + conversationUser?.baseUrl, + uiState + .userAbsence + .replacementUserId, + false + ) + ) } binding.outOfOfficeContainer.findViewById(R.id.absenceReplacement).text = context.resources.getString(R.string.user_absence_replacement) binding.outOfOfficeContainer.findViewById(R.id.replacement_user_avatar) - .load(imageUri){ + .load(imageUri) { transformations(CircleCropTransformation()) placeholder(R.drawable.account_circle_96dp) error(R.drawable.account_circle_96dp) @@ -1143,11 +1156,13 @@ class ChatActivity : } binding.outOfOfficeContainer.findViewById(R.id.replacement_user_name).text = uiState.userAbsence.replacementUserDisplayName - } else { binding.outOfOfficeContainer.findViewById(R.id.absenceReplacement).visibility = View.GONE } binding.outOfOfficeContainer.findViewById(R.id.userAbsenceLongMessage).text = uiState.userAbsence.message + binding.outOfOfficeContainer.findViewById(R.id.avatar_chip).setOnClickListener { + joinOneToOneConversation(uiState.userAbsence.replacementUserId!!) + } } } } @@ -3917,6 +3932,24 @@ class ChatActivity : startActivity(shareIntent) } + fun joinOneToOneConversation(userId: String) { + val apiVersion = + ApiUtils.getConversationApiVersion(conversationUser!!, intArrayOf(ApiUtils.API_V4, 1)) + val retrofitBucket = ApiUtils.getRetrofitBucketForCreateRoom( + apiVersion, + conversationUser?.baseUrl!!, + "1", + "users", + userId, + null + ) + chatViewModel.createRoom( + credentials!!, + retrofitBucket.url!!, + retrofitBucket.queryMap!! + ) + } + companion object { val TAG = ChatActivity::class.simpleName private const val CONTENT_TYPE_CALL_STARTED: Byte = 1 diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index b192c881a..755e8959b 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -608,7 +608,7 @@ object ApiUtils { return "${getUrlForRoom(version, baseUrl, token)}/archive" } - fun getUrlForOutOfOffice(baseUrl: String, userId: String): String { + fun getUrlForOutOfOffice(baseUrl: String, userId: String): String { return "$baseUrl$OCS_API_VERSION/apps/dav/api/v1/outOfOffice/$userId/now" } }