From c36705deb860b9f245be293a26a9ce1a640236f6 Mon Sep 17 00:00:00 2001
From: Pierre Nicolas <pierre.nicolas@savoirfairelinux.com>
Date: Tue, 1 Oct 2024 07:47:00 -0400
Subject: [PATCH] details: connect share and qrcode buttons

Use the new QrCodeFragment.

GitLab: #1723
Change-Id: Ie6c2bd4210a135719f6e21c5c257614ad88ac067
---
 .../fragments/ConversationActionsFragment.kt  | 30 +++++++++++++++++--
 .../app/src/main/res/values/strings.xml       |  2 ++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/jami-android/app/src/main/java/cx/ring/fragments/ConversationActionsFragment.kt b/jami-android/app/src/main/java/cx/ring/fragments/ConversationActionsFragment.kt
index c4e26d537..023c4c399 100644
--- a/jami-android/app/src/main/java/cx/ring/fragments/ConversationActionsFragment.kt
+++ b/jami-android/app/src/main/java/cx/ring/fragments/ConversationActionsFragment.kt
@@ -18,6 +18,7 @@ package cx.ring.fragments
 
 import android.content.ClipData
 import android.content.ClipboardManager
+import android.content.Intent
 import android.os.Bundle
 import android.view.*
 import androidx.annotation.StringRes
@@ -40,6 +41,7 @@ import io.reactivex.rxjava3.core.Single
 import io.reactivex.rxjava3.disposables.CompositeDisposable
 import net.jami.model.Conversation
 import net.jami.model.Uri
+import net.jami.qrcode.QRCodePresenter
 import net.jami.services.AccountService
 import net.jami.services.ConversationFacade
 import javax.inject.Inject
@@ -163,12 +165,14 @@ class ConversationActionsFragment : Fragment() {
                             if (registeredName.isEmpty()) R.drawable.background_rounded_16_top
                             else R.drawable.background_clickable
                         )
+                        shareButton.setOnClickListener {
+                            shareContact(registeredName.ifEmpty { identifier.uri })
+                        }
+                        qrCode.setOnClickListener { showContactQRCode(identifier) }
                     }
             )
             conversationDelete.text = resources.getString(R.string.delete_conversation)
             conversationDelete.setOnClickListener {  }
-            qrCode.setOnClickListener {  }
-            shareButton.setOnClickListener {  }
 
             descriptionPanel.isVisible = false  // Disable description edit for 1-to-1 conversation
             // Description being hidden, we put the rounded background on the secureP2pConnection.
@@ -268,6 +272,28 @@ class ConversationActionsFragment : Fragment() {
         Snackbar.make(binding!!.root, getString(R.string.conversation_action_copied_peer_number_clipboard, toCopy), Snackbar.LENGTH_LONG).show()
     }
 
+    private fun shareContact(displayName: String) {
+        val sharingIntent = Intent(Intent.ACTION_SEND)
+        sharingIntent.type = "text/plain"
+        sharingIntent.putExtra(Intent.EXTRA_SUBJECT, getText(R.string.share_contact_intent_title))
+        sharingIntent.putExtra(
+            Intent.EXTRA_TEXT,
+            getString(
+                R.string.share_contact_intent_body,
+                displayName,
+                getText(R.string.app_website)
+            )
+        )
+        startActivity(Intent.createChooser(sharingIntent, getText(R.string.share_via)))
+    }
+
+    private fun showContactQRCode(contactUri: Uri) {
+        QRCodeFragment.newInstance(
+            QRCodePresenter.MODE_SHARE,
+            contactUri = contactUri
+        ).show(parentFragmentManager, QRCodeFragment::class.java.simpleName)
+    }
+
     companion object {
         val TAG = ConversationActionsFragment::class.simpleName!!
         fun newInstance(accountId: String, conversationId: Uri) =
diff --git a/jami-android/app/src/main/res/values/strings.xml b/jami-android/app/src/main/res/values/strings.xml
index cf17dac6f..aeefaaf47 100644
--- a/jami-android/app/src/main/res/values/strings.xml
+++ b/jami-android/app/src/main/res/values/strings.xml
@@ -582,6 +582,8 @@ along with this program; if not, write to the Free Software
     <string name="error_open_no_app_found">No application found to handle this file: %1$s</string>
     <string name="swarm_detail_no_document">You have no documents yet.</string>
     <string name="group_admin">Admin</string>
+    <string name="share_contact_intent_title">Add this contact on Jami!</string>
+    <string name="share_contact_intent_body">You can add this contact “%1$s” on the Jami distributed communication platform: %2$s</string>
 
     <!--  JamiId  -->
     <string name="jami_id_copy">Copy JamiId</string>
-- 
GitLab