Browse Source

fix undead MainActivity appearing after browser login and back press (#5056)

To reproduce, login an additional account via Browser login and then
press back. You will find yourself in a broken interface where the
displayed posts don't match the logged-in account. This does not happen
with Tusky login.
Seems like `finishAffinity()` does not work as expected when there is an
Activity of another app (the browser) on the stack.
Fix with the nuclear option (starting a new task). Also remove the
explode animation, as this was broken before (finish needs to be called
after startActivity for the animation to appear) and animations between
tasks don't work in newer Android versions anyway.
pull/5057/head^2
Konrad Pozniak 11 months ago committed by GitHub
parent
commit
41795c7fba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 16
      app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
  2. 3
      app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt
  3. 12
      app/src/main/res/anim/explode.xml

16
app/src/main/java/com/keylesspalace/tusky/MainActivity.kt

@ -95,11 +95,9 @@ import com.keylesspalace.tusky.pager.MainPagerAdapter
import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.usecase.DeveloperToolsUseCase
import com.keylesspalace.tusky.usecase.LogoutUsecase
import com.keylesspalace.tusky.util.ActivityConstants
import com.keylesspalace.tusky.util.emojify
import com.keylesspalace.tusky.util.getParcelableExtraCompat
import com.keylesspalace.tusky.util.hide
import com.keylesspalace.tusky.util.overrideActivityTransitionCompat
import com.keylesspalace.tusky.util.reduceSwipeSensitivity
import com.keylesspalace.tusky.util.show
import com.keylesspalace.tusky.util.startActivityWithSlideInAnimation
@ -217,14 +215,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
viewModel.setupNotifications(this)
}
if (explodeAnimationWasRequested()) {
overrideActivityTransitionCompat(
ActivityConstants.OVERRIDE_TRANSITION_OPEN,
R.anim.explode,
R.anim.activity_open_exit
)
}
selectedEmojiPack = preferences.getString(EMOJI_PREFERENCE, "")
var showNotificationTab = false
@ -1118,15 +1108,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
}
}
private fun explodeAnimationWasRequested(): Boolean {
return intent.getBooleanExtra(OPEN_WITH_EXPLODE_ANIMATION, false)
}
override fun getActionButton() = binding.composeButton
companion object {
const val OPEN_WITH_EXPLODE_ANIMATION = "explode"
private const val TAG = "MainActivity" // logging tag
private const val DRAWER_ITEM_ADD_ACCOUNT: Long = -13
private const val DRAWER_ITEM_ANNOUNCEMENTS: Long = 14

3
app/src/main/java/com/keylesspalace/tusky/components/login/LoginActivity.kt

@ -291,9 +291,8 @@ class LoginActivity : BaseActivity() {
oauthScopes = OAUTH_SCOPES,
newAccount = newAccount
)
finishAffinity()
val intent = Intent(this, MainActivity::class.java)
intent.putExtra(MainActivity.OPEN_WITH_EXPLODE_ANIMATION, true)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(intent)
}, { e ->
setLoading(false)

12
app/src/main/res/anim/explode.xml

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:duration="300"
android:fromXScale="0"
android:fromYScale="0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1" >
</scale>
</set>
Loading…
Cancel
Save