From 73eece277c21a0a90aec352849c33c96a0f2fa12 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 12 Jun 2019 18:00:41 +0200 Subject: [PATCH] allow items and guild pages to be opened to pages other than the first one --- Habitica/res/navigation/navigation.xml | 8 ++++++++ .../habitica/ui/activities/NotificationsActivity.kt | 12 +++++------- .../ui/fragments/inventory/items/ItemsFragment.kt | 11 +++++++++++ .../habitica/ui/fragments/social/GuildFragment.kt | 10 +++++++--- .../habitica/ui/viewmodels/NotificationsViewModel.kt | 4 +++- 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Habitica/res/navigation/navigation.xml b/Habitica/res/navigation/navigation.xml index b95ed891c..aaa22360a 100644 --- a/Habitica/res/navigation/navigation.xml +++ b/Habitica/res/navigation/navigation.xml @@ -110,6 +110,10 @@ android:name="com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemsFragment" android:label="@string/sidebar_items"> + + ) { @@ -127,7 +125,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget } private fun createNotificationsHeaderView(notificationCount: Int): View? { - val header = inflater.inflate(R.layout.notifications_header, notification_items, false) + val header = inflater?.inflate(R.layout.notifications_header, notification_items, false) val badge = header?.findViewById(R.id.notifications_title_badge) as? TextView badge?.text = notificationCount.toString() @@ -220,7 +218,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget imageResourceId: Int? = null, textColor: Int? = null ): View? { - val item = inflater.inflate(R.layout.notification_item, notification_items, false) + val item = inflater?.inflate(R.layout.notification_item, notification_items, false) val container = item?.findViewById(R.id.notification_item) as? View container?.setOnClickListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.kt index cbf20b15f..42ffe23b8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemsFragment.kt @@ -30,6 +30,17 @@ class ItemsFragment : BaseMainFragment() { viewPager?.currentItem = 0 setViewPagerAdapter() + + arguments?.let { + val args = ItemsFragmentArgs.fromBundle(it) + viewPager?.currentItem = when (args.itemType) { + "hatchingPotions" -> 1 + "food" -> 2 + "quests" -> 3 + "special" -> 4 + else -> 0 + } + } } override fun injectFragment(component: UserComponent) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.kt index 945fc0e76..507b4fc1d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.kt @@ -48,9 +48,8 @@ class GuildFragment : BaseMainFragment() { viewModel.getGroupData().observe(viewLifecycleOwner, Observer { setGroup(it) }) viewModel.getIsMemberData().observe(viewLifecycleOwner, Observer { activity?.invalidateOptionsMenu() }) - val newArguments = arguments - if (newArguments != null) { - val args = GuildFragmentArgs.fromBundle(newArguments) + arguments?.let { + val args = GuildFragmentArgs.fromBundle(it) viewModel.setGroupID(args.groupID) } @@ -59,6 +58,11 @@ class GuildFragment : BaseMainFragment() { setViewPagerAdapter() setFragments() + arguments?.let { + val args = GuildFragmentArgs.fromBundle(it) + viewPager?.currentItem = args.tabToOpen + } + if (viewModel.groupID == "f2db2a7f-13c5-454d-b3ee-ea1f5089e601") { context?.let { FirebaseAnalytics.getInstance(it).logEvent("opened_no_party_guild", null) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt index 5e5575517..dc796324b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.ui.viewmodels import android.os.Bundle +import androidx.core.os.bundleOf import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository @@ -230,7 +231,7 @@ open class NotificationsViewModel : BaseViewModel() { when (notification.type) { Notification.Type.NEW_STUFF.type -> navController.navigate(R.id.newsFragment) Notification.Type.NEW_CHAT_MESSAGE.type -> clickNewChatMessage(notification, navController) - Notification.Type.NEW_MYSTERY_ITEMS.type -> navController.navigate(R.id.itemsFragment) + Notification.Type.NEW_MYSTERY_ITEMS.type -> navController.navigate(R.id.itemsFragment, bundleOf(Pair("itemType", "special"))) Notification.Type.UNALLOCATED_STATS_POINTS.type -> navController.navigate(R.id.statsFragment) // Group tasks should go to Group tasks view if that is added to this app at some point Notification.Type.GROUP_TASK_APPROVED.type -> navController.navigate(R.id.tasksFragment) @@ -246,6 +247,7 @@ open class NotificationsViewModel : BaseViewModel() { val bundle = Bundle() bundle.putString("groupID", data?.group?.id) bundle.putBoolean("isMember", true) // safe to assume user is member since they got the notification + bundle.putInt("tabToOpen", 1) navController.navigate(R.id.guildFragment, bundle) } }