From b294c9a1fd82a1ef23e618079109c979e6d07770 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 18 Jul 2022 15:00:51 +0200 Subject: [PATCH] Do not always start MainActivity first when launching HomeActivity --- .../im/vector/app/features/MainActivity.kt | 2 +- .../vector/app/features/home/HomeActivity.kt | 7 ++++++- .../app/features/login/LoginActivity.kt | 2 +- .../notifications/NotificationUtils.kt | 20 +++++++++++-------- .../app/features/onboarding/Login2Variant.kt | 3 ++- .../onboarding/ftueauth/FtueAuthVariant.kt | 6 +++++- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/MainActivity.kt b/vector/src/main/java/im/vector/app/features/MainActivity.kt index 805a52958a..968d3670a9 100644 --- a/vector/src/main/java/im/vector/app/features/MainActivity.kt +++ b/vector/src/main/java/im/vector/app/features/MainActivity.kt @@ -300,7 +300,7 @@ class MainActivity : VectorBaseActivity(), UnlockedActivity // We have a session. // Check it can be opened if (sessionHolder.getActiveSession().isOpenable) { - HomeActivity.newIntent(this, existingSession = true) + HomeActivity.newIntent(this, firstStartMainActivity = false, existingSession = true) } else { // The token is still invalid navigator.softLogout(this) 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 0eb136fc10..ff114e4db9 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 @@ -611,6 +611,7 @@ class HomeActivity : companion object { fun newIntent( context: Context, + firstStartMainActivity: Boolean, clearNotification: Boolean = false, authenticationDescription: AuthenticationDescription? = null, existingSession: Boolean = false, @@ -628,7 +629,11 @@ class HomeActivity : putExtra(Mavericks.KEY_ARG, args) } - return MainActivity.getIntentWithNextIntent(context, intent) + return if (firstStartMainActivity) { + MainActivity.getIntentWithNextIntent(context, intent) + } else { + intent + } } } diff --git a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt index 4cbebd67a3..763d1eed38 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt @@ -221,7 +221,7 @@ open class LoginActivity : VectorBaseActivity(), UnlockedA analyticsScreenName = MobileScreen.ScreenName.Register } val authDescription = inferAuthDescription(loginViewState) - val intent = HomeActivity.newIntent(this, authenticationDescription = authDescription) + val intent = HomeActivity.newIntent(this, firstStartMainActivity = false, authenticationDescription = authDescription) startActivity(intent) finish() return diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt index 0066fab5ce..514952b66c 100755 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt @@ -240,7 +240,7 @@ class NotificationUtils @Inject constructor( @SuppressLint("NewApi") fun buildForegroundServiceNotification(@StringRes subTitleResId: Int, withProgress: Boolean = true): Notification { // build the pending intent go to the home screen if this is clicked. - val i = HomeActivity.newIntent(context) + val i = HomeActivity.newIntent(context, firstStartMainActivity = false) i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP val mainIntent = MainActivity.getIntentWithNextIntent(context, i) val pi = PendingIntent.getActivity(context, 0, mainIntent, PendingIntentCompat.FLAG_IMMUTABLE) @@ -346,7 +346,7 @@ class NotificationUtils @Inject constructor( ) val answerCallPendingIntent = TaskStackBuilder.create(context) - .addNextIntentWithParentStack(HomeActivity.newIntent(context)) + .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false)) .addNextIntent( VectorCallActivity.newIntent( context = context, @@ -470,7 +470,7 @@ class NotificationUtils @Inject constructor( ) val contentPendingIntent = TaskStackBuilder.create(context) - .addNextIntentWithParentStack(HomeActivity.newIntent(context)) + .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false)) .addNextIntent(VectorCallActivity.newIntent(context, call, null)) .getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE) @@ -532,7 +532,7 @@ class NotificationUtils @Inject constructor( .setCategory(NotificationCompat.CATEGORY_CALL) val contentPendingIntent = TaskStackBuilder.create(context) - .addNextIntentWithParentStack(HomeActivity.newIntent(context)) + .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false)) .addNextIntent(RoomDetailActivity.newIntent(context, TimelineArgs(callInformation.nativeRoomId), true)) .getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE) @@ -767,7 +767,11 @@ class NotificationUtils @Inject constructor( joinIntentPendingIntent ) - val contentIntent = HomeActivity.newIntent(context, inviteNotificationRoomId = inviteNotifiableEvent.roomId) + val contentIntent = HomeActivity.newIntent( + context, + firstStartMainActivity = true, + inviteNotificationRoomId = inviteNotifiableEvent.roomId + ) contentIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that contentIntent.data = createIgnoredUri(inviteNotifiableEvent.eventId) @@ -808,7 +812,7 @@ class NotificationUtils @Inject constructor( .setColor(accentColor) .setAutoCancel(true) .apply { - val contentIntent = HomeActivity.newIntent(context) + val contentIntent = HomeActivity.newIntent(context, firstStartMainActivity = true) contentIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that contentIntent.data = createIgnoredUri(simpleNotifiableEvent.eventId) @@ -837,7 +841,7 @@ class NotificationUtils @Inject constructor( // Recreate the back stack return TaskStackBuilder.create(context) - .addNextIntentWithParentStack(HomeActivity.newIntent(context)) + .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false)) .addNextIntent(roomIntentTap) .getPendingIntent( clock.epochMillis().toInt(), @@ -846,7 +850,7 @@ class NotificationUtils @Inject constructor( } private fun buildOpenHomePendingIntentForSummary(): PendingIntent { - val intent = HomeActivity.newIntent(context, clearNotification = true) + val intent = HomeActivity.newIntent(context, firstStartMainActivity = false, clearNotification = true) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP intent.data = createIgnoredUri("tapSummary") val mainIntent = MainActivity.getIntentWithNextIntent(context, intent) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/Login2Variant.kt b/vector/src/main/java/im/vector/app/features/onboarding/Login2Variant.kt index 0d7c83e360..7def6d62f0 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/Login2Variant.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/Login2Variant.kt @@ -302,7 +302,8 @@ class Login2Variant( private fun terminate() { val intent = HomeActivity.newIntent( - activity + activity, + firstStartMainActivity = false, ) activity.startActivity(intent) activity.finish() diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt index bb8c523b5f..867ab45834 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt @@ -482,7 +482,11 @@ class FtueAuthVariant( private fun navigateToHome() { withState(onboardingViewModel) { - val intent = HomeActivity.newIntent(activity, authenticationDescription = it.selectedAuthenticationState.description) + val intent = HomeActivity.newIntent( + activity, + firstStartMainActivity = false, + authenticationDescription = it.selectedAuthenticationState.description + ) activity.startActivity(intent) activity.finish() }