diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0aec13a95..3fdcb8eb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -65,6 +65,9 @@
+
+
+
diff --git a/app/src/main/java/org/linphone/activities/main/MainActivity.kt b/app/src/main/java/org/linphone/activities/main/MainActivity.kt
index 659077ca3..6ead8686c 100644
--- a/app/src/main/java/org/linphone/activities/main/MainActivity.kt
+++ b/app/src/main/java/org/linphone/activities/main/MainActivity.kt
@@ -149,13 +149,17 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
private fun handleIntentParams(intent: Intent) {
when (intent.action) {
Intent.ACTION_SEND, Intent.ACTION_SENDTO -> {
- lifecycleScope.launch {
- handleSendImage(intent)
+ if (intent.type?.startsWith("text/") == true) {
+ handleSendText(intent)
+ } else {
+ lifecycleScope.launch {
+ handleSendFile(intent)
+ }
}
}
Intent.ACTION_SEND_MULTIPLE -> {
lifecycleScope.launch {
- handleSendMultipleImages(intent)
+ handleSendMultipleFiles(intent)
}
}
Intent.ACTION_VIEW -> {
@@ -224,7 +228,15 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
}
}
- private suspend fun handleSendImage(intent: Intent) {
+ private fun handleSendText(intent: Intent) {
+ intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
+ sharedViewModel.textToShare.value = it
+ }
+
+ handleSendChatRoom(intent)
+ }
+
+ private suspend fun handleSendFile(intent: Intent) {
(intent.getParcelableExtra(Intent.EXTRA_STREAM) as? Uri)?.let {
val list = arrayListOf()
coroutineScope {
@@ -243,7 +255,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
handleSendChatRoom(intent)
}
- private suspend fun handleSendMultipleImages(intent: Intent) {
+ private suspend fun handleSendMultipleFiles(intent: Intent) {
intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM)?.let {
val list = arrayListOf()
coroutineScope {
@@ -264,7 +276,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
handleSendChatRoom(intent)
}
- private suspend fun handleSendChatRoom(intent: Intent) {
+ private fun handleSendChatRoom(intent: Intent) {
val uri = intent.data
if (uri != null) {
Log.i("[Main Activity] Found uri: $uri to send a message to")
diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt
index 683da1e52..b52722860 100644
--- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt
+++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt
@@ -238,6 +238,14 @@ class DetailChatRoomFragment : MasterFragment() {
coreContext.startCall(viewModel.addressToCall)
}
+ sharedViewModel.textToShare.observe(viewLifecycleOwner, Observer {
+ if (it.isNotEmpty()) {
+ Log.i("[Chat Room] Found text to share")
+ chatSendingViewModel.textToSend.value = it
+ sharedViewModel.textToShare.value = ""
+ }
+ })
+
sharedViewModel.filesToShare.observe(viewLifecycleOwner, Observer {
if (it.isNotEmpty()) {
for (path in it) {
diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt
index 483527391..c4d20c300 100644
--- a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt
+++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt
@@ -207,6 +207,13 @@ class MasterChatRoomsFragment : MasterFragment() {
adapter.selectedChatRoomEvent.value = Event(chatRoom)
}
} else {
+ sharedViewModel.textToShare.observe(viewLifecycleOwner, Observer {
+ if (it.isNotEmpty()) {
+ Log.i("[Chat] Found text to share")
+ val activity = requireActivity() as MainActivity
+ activity.showSnackBar(R.string.chat_room_toast_choose_for_sharing)
+ }
+ })
sharedViewModel.filesToShare.observe(viewLifecycleOwner, Observer {
if (it.isNotEmpty()) {
Log.i("[Chat] Found ${it.size} files to share")
diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt
index 12bbc6cf3..cb5aa0395 100644
--- a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt
@@ -40,6 +40,8 @@ class SharedMainViewModel : ViewModel() {
val filesToShare = MutableLiveData>()
+ val textToShare = MutableLiveData()
+
val messageToForwardEvent: MutableLiveData> by lazy {
MutableLiveData>()
}