Fix some back handlers

pull/2604/head
Alex Baker 7 months ago
parent ab02323f29
commit 738bf435db

@ -249,8 +249,8 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireActivity().onBackPressedDispatcher.addCallback(onBackPressed)
requireActivity().onBackPressedDispatcher.addCallback(requireActivity(), onBackPressed)
}
@OptIn(ExperimentalAnimationApi::class)

@ -18,6 +18,7 @@ import org.tasks.dialogs.ColorWheelPicker
import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.IconPickerDialog
import org.tasks.dialogs.IconPickerDialog.IconPickerCallback
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons.getIconResId
@ -63,6 +64,10 @@ abstract class BaseListSettingsActivity : ThemedInjectingAppCompatActivity(), Ic
toolbar.inflateMenu(R.menu.menu_tag_settings)
}
toolbar.setOnMenuItemClickListener(this)
addBackPressedCallback {
discard()
}
}
override fun onSaveInstanceState(outState: Bundle) {
@ -71,11 +76,6 @@ abstract class BaseListSettingsActivity : ThemedInjectingAppCompatActivity(), Ic
outState.putInt(EXTRA_SELECTED_ICON, selectedIcon)
}
override fun onBackPressed() {
super.onBackPressed()
discard()
}
protected abstract fun hasChanges(): Boolean
protected abstract suspend fun save()
protected abstract val isNew: Boolean

@ -44,6 +44,7 @@ import org.tasks.dialogs.Linkify
import org.tasks.extensions.Context.cookiePersistor
import org.tasks.extensions.Context.hideKeyboard
import org.tasks.extensions.Context.openUri
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.security.KeyStoreEncryption
import org.tasks.ui.DisplayableException
@ -145,6 +146,10 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
}
}
}
addBackPressedCallback {
discard()
}
}
@get:StringRes
@ -333,11 +338,6 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
}
}
override fun onBackPressed() {
super.onBackPressed()
discard()
}
private fun removeAccountPrompt() {
if (requestInProgress()) {
return

@ -1,10 +1,23 @@
package org.tasks.extensions
import android.app.Activity
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import org.tasks.extensions.Context.hideKeyboard
fun Activity.hideKeyboard() {
currentFocus?.let {
hideKeyboard(it)
}
}
fun ComponentActivity.addBackPressedCallback(block: () -> Unit) {
onBackPressedDispatcher.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
block()
}
}
)
}

@ -1,5 +1,6 @@
package org.tasks.locale.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
@ -105,9 +106,9 @@ public final class TaskerCreateTaskActivity extends AbstractFragmentPluginAppCom
return binding.title.getText().toString().trim();
}
@SuppressLint("MissingSuperCall")
@Override
public void onBackPressed() {
super.onBackPressed();
discardButtonClick();
}

@ -16,10 +16,10 @@ import org.tasks.Strings.isNullOrEmpty
import org.tasks.billing.Inventory
import org.tasks.data.TagData
import org.tasks.databinding.ActivityTagPickerBinding
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.themes.ColorProvider
import org.tasks.themes.Theme
import java.util.*
import javax.inject.Inject
@AndroidEntryPoint
@ -65,6 +65,22 @@ class TagPickerActivity : ThemedInjectingAppCompatActivity() {
recyclerView.layoutManager = LinearLayoutManager(this)
viewModel.observe(this) { recyclerAdapter.submitList(it) }
editText.setText(viewModel.text)
addBackPressedCallback {
if (isNullOrEmpty(viewModel.text)) {
val data = Intent()
data.putExtra(EXTRA_TASKS, taskIds)
data.putParcelableArrayListExtra(
EXTRA_PARTIALLY_SELECTED,
viewModel.getPartiallySelected()
)
data.putParcelableArrayListExtra(EXTRA_SELECTED, viewModel.getSelected())
setResult(Activity.RESULT_OK, data)
finish()
} else {
clear()
}
}
}
private fun onToggle(tagData: TagData, vh: TagPickerViewHolder) = lifecycleScope.launch {
@ -80,20 +96,6 @@ class TagPickerActivity : ThemedInjectingAppCompatActivity() {
viewModel.search(text?.toString() ?: "")
}
override fun onBackPressed() {
super.onBackPressed()
if (isNullOrEmpty(viewModel.text)) {
val data = Intent()
data.putExtra(EXTRA_TASKS, taskIds)
data.putParcelableArrayListExtra(EXTRA_PARTIALLY_SELECTED, viewModel.getPartiallySelected())
data.putParcelableArrayListExtra(EXTRA_SELECTED, viewModel.getSelected())
setResult(Activity.RESULT_OK, data)
finish()
} else {
clear()
}
}
private fun clear() {
editText.setText("")
}

Loading…
Cancel
Save