Automatically close action fragment when action exits successfully

This commit is contained in:
LoveSy 2024-09-01 23:37:56 +08:00 committed by John Wu
parent fbebb6ac10
commit 60894e458f
2 changed files with 25 additions and 6 deletions

View File

@ -8,11 +8,13 @@ import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.Toast
import androidx.core.view.MenuProvider import androidx.core.view.MenuProvider
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.topjohnwu.magisk.R import com.topjohnwu.magisk.R
import com.topjohnwu.magisk.arch.BaseFragment import com.topjohnwu.magisk.arch.BaseFragment
import com.topjohnwu.magisk.arch.viewModel import com.topjohnwu.magisk.arch.viewModel
import com.topjohnwu.magisk.core.ktx.toast
import com.topjohnwu.magisk.databinding.FragmentActionMd2Binding import com.topjohnwu.magisk.databinding.FragmentActionMd2Binding
import com.topjohnwu.magisk.ui.flash.FlashViewModel import com.topjohnwu.magisk.ui.flash.FlashViewModel
import timber.log.Timber import timber.log.Timber
@ -46,11 +48,27 @@ class ActionFragment : BaseFragment<FragmentActionMd2Binding>(), MenuProvider {
ActionViewModel.State.FAILED -> CoreR.string.failure ActionViewModel.State.FAILED -> CoreR.string.failure
} }
) )
if (it != ActionViewModel.State.RUNNING) { when (it) {
binding.closeBtn.apply { ActionViewModel.State.SUCCESS -> {
if (!this.isVisible) this.show() activity?.apply {
if (!this.isFocused) this.requestFocus() toast(
getString(
com.topjohnwu.magisk.core.R.string.done_action,
this@ActionFragment.viewModel.args.name
), Toast.LENGTH_LONG
)
onBackPressed()
}
} }
ActionViewModel.State.FAILED -> {
binding.closeBtn.apply {
if (!this.isVisible) this.show()
if (!this.isFocused) this.requestFocus()
}
}
else -> {}
} }
} }
} }
@ -90,7 +108,7 @@ class ActionFragment : BaseFragment<FragmentActionMd2Binding>(), MenuProvider {
} }
override fun onBackPressed(): Boolean { override fun onBackPressed(): Boolean {
if (!binding.closeBtn.isVisible) return true if (viewModel.state.value == ActionViewModel.State.RUNNING) return true
return super.onBackPressed() return super.onBackPressed()
} }

View File

@ -215,8 +215,9 @@
<string name="close">Close</string> <string name="close">Close</string>
<string name="release_notes">Release notes</string> <string name="release_notes">Release notes</string>
<string name="flashing">Flashing…</string> <string name="flashing">Flashing…</string>
<string name="running">Running...</string> <string name="running">Running</string>
<string name="done">Done!</string> <string name="done">Done!</string>
<string name="done_action">Done running action of %1$s</string>
<string name="failure">Failed!</string> <string name="failure">Failed!</string>
<string name="hide_app_title">Hiding the Magisk app…</string> <string name="hide_app_title">Hiding the Magisk app…</string>
<string name="open_link_failed_toast">No app found to open the link</string> <string name="open_link_failed_toast">No app found to open the link</string>