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.
// 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)

View File

@ -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
}
}
}

View File

@ -221,7 +221,7 @@ open class LoginActivity : VectorBaseActivity<ActivityLoginBinding>(), 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

View File

@ -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)

View File

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

View File

@ -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()
}