diff --git a/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt b/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt index bb38411980..6cfe8acc16 100644 --- a/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt +++ b/vector/src/main/java/im/vector/app/core/utils/SystemUtils.kt @@ -159,7 +159,7 @@ fun startInstallFromSourceIntent(context: Context, activityResultLauncher: Activ } fun startSharePlainTextIntent( - fragment: Fragment, + context: Context, activityResultLauncher: ActivityResultLauncher?, chooserTitle: String?, text: String, @@ -182,10 +182,10 @@ fun startSharePlainTextIntent( if (activityResultLauncher != null) { activityResultLauncher.launch(intent) } else { - fragment.startActivity(intent) + context.startActivity(intent) } } catch (activityNotFoundException: ActivityNotFoundException) { - fragment.activity?.toast(R.string.error_no_external_application_found) + context.toast(R.string.error_no_external_application_found) } } diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt index 61148f3aab..b8b84ea322 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupStep3Fragment.kt @@ -142,7 +142,7 @@ class KeysBackupSetupStep3Fragment @Inject constructor() : VectorBaseFragment(R.id.keys_backup_setup_share)?.debouncedClicks { startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = context?.getString(R.string.keys_backup_setup_step3_share_intent_chooser_title), text = recoveryKey, diff --git a/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapSaveRecoveryKeyFragment.kt b/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapSaveRecoveryKeyFragment.kt index efabae2f3a..db24807c1b 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapSaveRecoveryKeyFragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapSaveRecoveryKeyFragment.kt @@ -104,7 +104,7 @@ class BootstrapSaveRecoveryKeyFragment @Inject constructor( ?: return@withState startSharePlainTextIntent( - this, + requireContext(), copyStartForActivityResult, context?.getString(R.string.keys_backup_setup_step3_share_intent_chooser_title), recoveryKey, diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt index 81cd158321..4538b7f7cc 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt @@ -46,10 +46,10 @@ import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.core.platform.VectorMenuProvider import im.vector.app.core.pushers.PushersManager import im.vector.app.core.pushers.UnifiedPushHelper +import im.vector.app.core.utils.startSharePlainTextIntent import im.vector.app.databinding.ActivityHomeBinding import im.vector.app.features.MainActivity import im.vector.app.features.MainActivityArgs -import im.vector.app.features.VectorFeatures import im.vector.app.features.analytics.accountdata.AnalyticsAccountDataViewModel import im.vector.app.features.analytics.plan.MobileScreen import im.vector.app.features.analytics.plan.ViewRoom @@ -587,10 +587,29 @@ class HomeActivity : navigator.openSettings(this) true } + R.id.menu_home_invite_friends -> { + launchInviteFriends() + true + } else -> false } } + private fun launchInviteFriends() { + activeSessionHolder.getSafeActiveSession()?.permalinkService()?.createPermalink(sharedActionViewModel.session.myUserId)?.let { permalink -> + analyticsTracker.screen(MobileScreen(screenName = MobileScreen.ScreenName.InviteFriends)) + val text = getString(R.string.invite_friends_text, permalink) + + startSharePlainTextIntent( + context = this, + activityResultLauncher = null, + chooserTitle = getString(R.string.invite_friends), + text = text, + extraTitle = getString(R.string.invite_friends_rich_title) + ) + } + } + override fun onBackPressed() { if (views.drawerLayout.isDrawerOpen(GravityCompat.START)) { views.drawerLayout.closeDrawer(GravityCompat.START) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt index 9ce950ba31..e79387c66d 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt @@ -102,7 +102,7 @@ class HomeDrawerFragment @Inject constructor( val text = getString(R.string.invite_friends_text, permalink) startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = getString(R.string.invite_friends), text = text, diff --git a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt index 05a1af6e8e..94b489d79b 100644 --- a/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/NewHomeDetailFragment.kt @@ -300,7 +300,7 @@ class NewHomeDetailFragment @Inject constructor( } } - views.avatar.setOnClickListener { + views.avatar.debouncedClicks { navigator.openSettings(requireContext()) } } diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt index d050b0d561..686c87a18c 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -334,7 +334,7 @@ class RoomMemberProfileFragment @Inject constructor( .setNeutralButton(R.string.ok, null) .setPositiveButton(R.string.share_by_text) { _, _ -> startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = null, text = permalink diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt index 2f8128b7af..1830cc04e8 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt @@ -337,7 +337,7 @@ class RoomProfileFragment @Inject constructor( private fun onShareRoomProfile(permalink: String) { startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = null, text = permalink diff --git a/vector/src/main/java/im/vector/app/features/spaces/share/ShareSpaceBottomSheet.kt b/vector/src/main/java/im/vector/app/features/spaces/share/ShareSpaceBottomSheet.kt index 72a2b6c156..3b0bc7f0fe 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/share/ShareSpaceBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/share/ShareSpaceBottomSheet.kt @@ -89,7 +89,7 @@ class ShareSpaceBottomSheet : VectorBaseBottomSheetDialogFragment { startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = getString(R.string.share_by_text), text = getString(R.string.share_space_link_message, event.spaceName, event.permalink), diff --git a/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt b/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt index a31b0d3a25..259a220874 100644 --- a/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt +++ b/vector/src/main/java/im/vector/app/features/usercode/ShowUserCodeFragment.kt @@ -67,7 +67,7 @@ class ShowUserCodeFragment @Inject constructor( sharedViewModel.observeViewEvents { if (it is UserCodeShareViewEvents.SharePlainText) { startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = it.title, text = it.text, diff --git a/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt b/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt index b31833e37c..3fe95cfb7c 100644 --- a/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/userdirectory/UserListFragment.kt @@ -96,7 +96,7 @@ class UserListFragment @Inject constructor( is UserListViewEvents.OpenShareMatrixToLink -> { val text = getString(R.string.invite_friends_text, it.link) startSharePlainTextIntent( - fragment = this, + context = requireContext(), activityResultLauncher = null, chooserTitle = getString(R.string.invite_friends), text = text, diff --git a/vector/src/main/res/menu/menu_new_home.xml b/vector/src/main/res/menu/menu_new_home.xml index 9abe297c04..e893624d54 100644 --- a/vector/src/main/res/menu/menu_new_home.xml +++ b/vector/src/main/res/menu/menu_new_home.xml @@ -4,30 +4,33 @@ xmlns:tools="http://schemas.android.com/tools"> + android:title="@string/send_suggestion" + app:showAsAction="never" /> + android:title="@string/send_bug_report" + app:showAsAction="never" /> + tools:ignore="HardcodedText" + app:showAsAction="never" /> + tools:ignore="HardcodedText" + app:showAsAction="never" />