Do not always start MainActivity first when launching HomeActivity

This commit is contained in:
Benoit Marty 2022-07-18 15:00:51 +02:00 committed by Benoit Marty
parent 0bedfc8087
commit b294c9a1fd
6 changed files with 27 additions and 13 deletions

View File

@ -300,7 +300,7 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
// We have a session. // We have a session.
// Check it can be opened // Check it can be opened
if (sessionHolder.getActiveSession().isOpenable) { if (sessionHolder.getActiveSession().isOpenable) {
HomeActivity.newIntent(this, existingSession = true) HomeActivity.newIntent(this, firstStartMainActivity = false, existingSession = true)
} else { } else {
// The token is still invalid // The token is still invalid
navigator.softLogout(this) navigator.softLogout(this)

View File

@ -611,6 +611,7 @@ class HomeActivity :
companion object { companion object {
fun newIntent( fun newIntent(
context: Context, context: Context,
firstStartMainActivity: Boolean,
clearNotification: Boolean = false, clearNotification: Boolean = false,
authenticationDescription: AuthenticationDescription? = null, authenticationDescription: AuthenticationDescription? = null,
existingSession: Boolean = false, existingSession: Boolean = false,
@ -628,7 +629,11 @@ class HomeActivity :
putExtra(Mavericks.KEY_ARG, args) putExtra(Mavericks.KEY_ARG, args)
} }
return MainActivity.getIntentWithNextIntent(context, intent) return if (firstStartMainActivity) {
MainActivity.getIntentWithNextIntent(context, intent)
} else {
intent
}
} }
} }

View File

@ -221,7 +221,7 @@ open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), UnlockedA
analyticsScreenName = MobileScreen.ScreenName.Register analyticsScreenName = MobileScreen.ScreenName.Register
} }
val authDescription = inferAuthDescription(loginViewState) val authDescription = inferAuthDescription(loginViewState)
val intent = HomeActivity.newIntent(this, authenticationDescription = authDescription) val intent = HomeActivity.newIntent(this, firstStartMainActivity = false, authenticationDescription = authDescription)
startActivity(intent) startActivity(intent)
finish() finish()
return return

View File

@ -240,7 +240,7 @@ class NotificationUtils @Inject constructor(
@SuppressLint("NewApi") @SuppressLint("NewApi")
fun buildForegroundServiceNotification(@StringRes subTitleResId: Int, withProgress: Boolean = true): Notification { fun buildForegroundServiceNotification(@StringRes subTitleResId: Int, withProgress: Boolean = true): Notification {
// build the pending intent go to the home screen if this is clicked. // 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 i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
val mainIntent = MainActivity.getIntentWithNextIntent(context, i) val mainIntent = MainActivity.getIntentWithNextIntent(context, i)
val pi = PendingIntent.getActivity(context, 0, mainIntent, PendingIntentCompat.FLAG_IMMUTABLE) val pi = PendingIntent.getActivity(context, 0, mainIntent, PendingIntentCompat.FLAG_IMMUTABLE)
@ -346,7 +346,7 @@ class NotificationUtils @Inject constructor(
) )
val answerCallPendingIntent = TaskStackBuilder.create(context) val answerCallPendingIntent = TaskStackBuilder.create(context)
.addNextIntentWithParentStack(HomeActivity.newIntent(context)) .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false))
.addNextIntent( .addNextIntent(
VectorCallActivity.newIntent( VectorCallActivity.newIntent(
context = context, context = context,
@ -470,7 +470,7 @@ class NotificationUtils @Inject constructor(
) )
val contentPendingIntent = TaskStackBuilder.create(context) val contentPendingIntent = TaskStackBuilder.create(context)
.addNextIntentWithParentStack(HomeActivity.newIntent(context)) .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false))
.addNextIntent(VectorCallActivity.newIntent(context, call, null)) .addNextIntent(VectorCallActivity.newIntent(context, call, null))
.getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE) .getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE)
@ -532,7 +532,7 @@ class NotificationUtils @Inject constructor(
.setCategory(NotificationCompat.CATEGORY_CALL) .setCategory(NotificationCompat.CATEGORY_CALL)
val contentPendingIntent = TaskStackBuilder.create(context) val contentPendingIntent = TaskStackBuilder.create(context)
.addNextIntentWithParentStack(HomeActivity.newIntent(context)) .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false))
.addNextIntent(RoomDetailActivity.newIntent(context, TimelineArgs(callInformation.nativeRoomId), true)) .addNextIntent(RoomDetailActivity.newIntent(context, TimelineArgs(callInformation.nativeRoomId), true))
.getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE) .getPendingIntent(clock.epochMillis().toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE)
@ -767,7 +767,11 @@ class NotificationUtils @Inject constructor(
joinIntentPendingIntent 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 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 // 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) contentIntent.data = createIgnoredUri(inviteNotifiableEvent.eventId)
@ -808,7 +812,7 @@ class NotificationUtils @Inject constructor(
.setColor(accentColor) .setColor(accentColor)
.setAutoCancel(true) .setAutoCancel(true)
.apply { .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 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 // 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) contentIntent.data = createIgnoredUri(simpleNotifiableEvent.eventId)
@ -837,7 +841,7 @@ class NotificationUtils @Inject constructor(
// Recreate the back stack // Recreate the back stack
return TaskStackBuilder.create(context) return TaskStackBuilder.create(context)
.addNextIntentWithParentStack(HomeActivity.newIntent(context)) .addNextIntentWithParentStack(HomeActivity.newIntent(context, firstStartMainActivity = false))
.addNextIntent(roomIntentTap) .addNextIntent(roomIntentTap)
.getPendingIntent( .getPendingIntent(
clock.epochMillis().toInt(), clock.epochMillis().toInt(),
@ -846,7 +850,7 @@ class NotificationUtils @Inject constructor(
} }
private fun buildOpenHomePendingIntentForSummary(): PendingIntent { 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.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
intent.data = createIgnoredUri("tapSummary") intent.data = createIgnoredUri("tapSummary")
val mainIntent = MainActivity.getIntentWithNextIntent(context, intent) val mainIntent = MainActivity.getIntentWithNextIntent(context, intent)

View File

@ -302,7 +302,8 @@ class Login2Variant(
private fun terminate() { private fun terminate() {
val intent = HomeActivity.newIntent( val intent = HomeActivity.newIntent(
activity activity,
firstStartMainActivity = false,
) )
activity.startActivity(intent) activity.startActivity(intent)
activity.finish() activity.finish()

View File

@ -482,7 +482,11 @@ class FtueAuthVariant(
private fun navigateToHome() { private fun navigateToHome() {
withState(onboardingViewModel) { 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.startActivity(intent)
activity.finish() activity.finish()
} }