From 941f8b6a9dcb308e448b10398e4f0adb8d215ce9 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 24 Jul 2020 16:24:58 +0200 Subject: [PATCH] Display back button on some pages --- .../data/implementation/TaskRepositoryImpl.kt | 2 +- .../habitica/data/local/TaskLocalRepository.kt | 2 +- .../local/implementation/RealmTaskLocalRepository.kt | 3 ++- .../android/habitica/ui/activities/MainActivity.kt | 7 ++++++- .../habitica/ui/activities/TaskFormActivity.kt | 2 +- .../android/habitica/ui/fragments/BaseMainFragment.kt | 11 +++++++++++ .../customization/AvatarEquipmentFragment.kt | 1 + .../inventory/customization/AvatarOverviewFragment.kt | 1 + .../inventory/equipment/EquipmentDetailFragment.kt | 1 + .../inventory/stable/MountDetailRecyclerFragment.kt | 1 + .../inventory/stable/PetDetailRecyclerFragment.kt | 1 + 11 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt index 3899118cd..b5663043c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt @@ -313,6 +313,6 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli } override fun getTasksForChallenge(challengeID: String?): Flowable> { - return localRepository.getTasksForChallenge(challengeID) + return localRepository.getTasksForChallenge(challengeID, userID) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt index 826bd03f0..02a96642c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt @@ -35,5 +35,5 @@ interface TaskLocalRepository : BaseLocalRepository { fun saveCompletedTodos(userId: String, tasks: MutableCollection) fun getErroredTasks(userID: String): Flowable> fun getUser(userID: String): Flowable - fun getTasksForChallenge(challengeID: String?): Flowable> + fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt index 2fb85458d..007c0d2bf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt @@ -237,9 +237,10 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .map { users -> users.first() } } - override fun getTasksForChallenge(challengeID: String?): Flowable> { + override fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> { return realm.where(Task::class.java) .equalTo("challengeID", challengeID) + .equalTo("userId", userID) .findAll() .asFlowable() .filter { it.isLoaded } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index 7be8e44b6..5be789f7f 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -133,7 +133,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { private var sideAvatarView: AvatarView? = null private var activeTutorialView: TutorialView? = null private var drawerFragment: NavigationDrawerFragment? = null - private var drawerToggle: ActionBarDrawerToggle? = null + var drawerToggle: ActionBarDrawerToggle? = null private var resumeFromActivity = false private var userIsOnQuest = false @@ -231,6 +231,11 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { } } + override fun onSupportNavigateUp(): Boolean { + onBackPressed() + return true + } + private fun setupNotifications() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channelId = "default" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index bcea6cc35..1b58172fd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -508,7 +508,7 @@ class TaskFormActivity : BaseActivity() { } private fun showChallengeDeleteTask() { - compositeSubscription.add(taskRepository.getTasksForChallenge(task?.challengeID).subscribe(Consumer { tasks -> + compositeSubscription.add(taskRepository.getTasksForChallenge(task?.challengeID).firstElement().subscribe(Consumer { tasks -> val taskCount = tasks.size val alert = HabiticaAlertDialog(this) alert.setTitle(getString(R.string.delete_challenge_task_title)) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt index c104e5e6c..d9b5bbd22 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt @@ -4,6 +4,7 @@ import android.content.Context import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat @@ -28,6 +29,8 @@ abstract class BaseMainFragment : BaseFragment() { @Inject lateinit var soundManager: SoundManager + protected var showsBackButton: Boolean = false + open val activity get() = getActivity() as? MainActivity val tabLayout get() = activity?.binding?.detailTabs val collapsingToolbar get() = activity?.binding?.toolbar @@ -72,6 +75,14 @@ abstract class BaseMainFragment : BaseFragment() { return null } + override fun onResume() { + super.onResume() + activity?.drawerToggle?.isDrawerIndicatorEnabled = !showsBackButton + activity?.supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + + private fun updateTabLayoutVisibility() { if (this.usesTabLayout) { tabLayout?.removeAllTabs() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt index c67412958..f840da8e6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt @@ -63,6 +63,7 @@ class AvatarEquipmentFragment : BaseMainFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + showsBackButton = true super.onViewCreated(view, savedInstanceState) arguments?.let { val args = AvatarEquipmentFragmentArgs.fromBundle(it) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt index 2cfb1db99..1ef9d578c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt @@ -26,6 +26,7 @@ class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedLis } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + showsBackButton = true super.onViewCreated(view, savedInstanceState) binding.avatarSizeSpinner.onItemSelectedListener = this diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt index 464830b69..a2bb3eb0e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.kt @@ -46,6 +46,7 @@ class EquipmentDetailFragment : BaseMainFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + showsBackButton = true super.onViewCreated(view, savedInstanceState) arguments?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt index d149f350e..73bc761a6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt @@ -51,6 +51,7 @@ class MountDetailRecyclerFragment : BaseMainFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + showsBackButton = true super.onViewCreated(view, savedInstanceState) arguments?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index 718a4dc18..8da3d92c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -59,6 +59,7 @@ class PetDetailRecyclerFragment : BaseMainFragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + showsBackButton = true super.onViewCreated(view, savedInstanceState) arguments?.let {