diff --git a/Habitica/res/layout/fragment_avatar_overview.xml b/Habitica/res/layout/fragment_avatar_overview.xml
index 4c4b1fa98..0a6b3a683 100644
--- a/Habitica/res/layout/fragment_avatar_overview.xml
+++ b/Habitica/res/layout/fragment_avatar_overview.xml
@@ -32,7 +32,6 @@
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical">
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
Fill out this 5 minute survey to help us grow and receive an achievement!
You must purchase the previous items in this sequence to unlock
You caused damage to the boss
+ Style
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
index 81c9d817d..2ccf7b07e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
@@ -5,11 +5,12 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.CustomizationRepository
import com.habitrpg.android.habitica.data.InventoryRepository
-import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
+import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.user.User
@@ -17,15 +18,15 @@ import com.habitrpg.android.habitica.ui.adapter.CustomizationRecyclerViewAdapter
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
-import io.reactivex.rxjava3.core.Flowable
import javax.inject.Inject
-class AvatarCustomizationFragment : BaseMainFragment() {
+class AvatarCustomizationFragment : BaseMainFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
- override var binding: FragmentRecyclerviewBinding? = null
+ override var binding: FragmentRefreshRecyclerviewBinding? = null
- override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding {
- return FragmentRecyclerviewBinding.inflate(inflater, container, false)
+ override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
+ return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
}
@Inject
@@ -82,7 +83,7 @@ class AvatarCustomizationFragment : BaseMainFragment() {
+class AvatarEquipmentFragment : BaseMainFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
@Inject
lateinit var inventoryRepository: InventoryRepository
- override var binding: FragmentRecyclerviewBinding? = null
+ override var binding: FragmentRefreshRecyclerviewBinding? = null
- override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding {
- return FragmentRecyclerviewBinding.inflate(inflater, container, false)
+ override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
+ return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
}
var type: String? = null
@@ -70,7 +72,7 @@ class AvatarEquipmentFragment : BaseMainFragment()
category = args.category
}
}
-
+ binding?.refreshLayout?.setOnRefreshListener(this)
setGridSpanCount(view.width)
val layoutManager = GridLayoutManager(activity, 4)
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
@@ -136,4 +138,10 @@ class AvatarEquipmentFragment : BaseMainFragment()
this.adapter.activeEquipment = activeEquipment
}
}
+
+ override fun onRefresh() {
+ compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({
+ binding?.refreshLayout?.isRefreshing = false
+ }, RxErrorHandler.handleEmptyError()))
+ }
}
\ No newline at end of file
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 7fc8d1244..141d147e4 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
@@ -6,24 +6,26 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.InventoryRepository
-import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
+import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.ui.adapter.inventory.EquipmentRecyclerViewAdapter
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
import javax.inject.Inject
-class EquipmentDetailFragment : BaseMainFragment() {
+class EquipmentDetailFragment : BaseMainFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
@Inject
lateinit var inventoryRepository: InventoryRepository
- override var binding: FragmentRecyclerviewBinding? = null
+ override var binding: FragmentRefreshRecyclerviewBinding? = null
- override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding {
- return FragmentRecyclerviewBinding.inflate(inflater, container, false)
+ override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
+ return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
}
var type: String? = null
@@ -49,6 +51,7 @@ class EquipmentDetailFragment : BaseMainFragment()
isCostume = args.isCostume
equippedGear = args.equippedGear
}
+ binding?.refreshLayout?.setOnRefreshListener(this)
this.adapter.equippedGear = this.equippedGear
this.adapter.isCostume = this.isCostume
@@ -70,4 +73,10 @@ class EquipmentDetailFragment : BaseMainFragment()
override fun injectFragment(component: UserComponent) {
component.inject(this)
}
+
+ override fun onRefresh() {
+ compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({
+ binding?.refreshLayout?.isRefreshing = false
+ }, RxErrorHandler.handleEmptyError()))
+ }
}
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 702be0320..75bf2051e 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
@@ -4,10 +4,11 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.InventoryRepository
-import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
+import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
import com.habitrpg.android.habitica.extensions.getTranslatedType
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.inventory.Mount
@@ -19,7 +20,8 @@ import com.habitrpg.android.habitica.ui.helpers.MarginDecoration
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
import javax.inject.Inject
-class MountDetailRecyclerFragment : BaseMainFragment() {
+class MountDetailRecyclerFragment : BaseMainFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
@Inject
internal lateinit var inventoryRepository: InventoryRepository
@@ -30,10 +32,10 @@ class MountDetailRecyclerFragment : BaseMainFragment() {
+class PetDetailRecyclerFragment : BaseMainFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
@Inject
lateinit var inventoryRepository: InventoryRepository
@@ -40,10 +41,10 @@ class PetDetailRecyclerFragment : BaseMainFragment(
private var animalColor: String? = null
internal var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null
- override var binding: FragmentRecyclerviewBinding? = null
+ override var binding: FragmentRefreshRecyclerviewBinding? = null
- override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding {
- return FragmentRecyclerviewBinding.inflate(inflater, container, false)
+ override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
+ return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@@ -75,6 +76,7 @@ class PetDetailRecyclerFragment : BaseMainFragment(
animalType = args.type
animalColor = args.color
}
+ binding?.refreshLayout?.setOnRefreshListener(this)
layoutManager = androidx.recyclerview.widget.GridLayoutManager(getActivity(), 2)
layoutManager?.spanSizeLookup = object : androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup() {
@@ -196,4 +198,10 @@ class PetDetailRecyclerFragment : BaseMainFragment(
companion object {
private const val ANIMAL_TYPE_KEY = "ANIMAL_TYPE_KEY"
}
+
+ override fun onRefresh() {
+ compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({
+ binding?.refreshLayout?.isRefreshing = false
+ }, RxErrorHandler.handleEmptyError()))
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
index d5d66f591..e6e9ddfc4 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
@@ -4,10 +4,12 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.InventoryRepository
-import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
+import com.habitrpg.android.habitica.data.UserRepository
+import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
import com.habitrpg.android.habitica.extensions.getTranslatedType
import com.habitrpg.android.habitica.helpers.AppConfigManager
import com.habitrpg.android.habitica.helpers.RxErrorHandler
@@ -26,11 +28,14 @@ import io.reactivex.rxjava3.kotlin.combineLatest
import java.util.*
import javax.inject.Inject
-class StableRecyclerFragment : BaseFragment() {
+class StableRecyclerFragment : BaseFragment(),
+ SwipeRefreshLayout.OnRefreshListener {
@Inject
lateinit var inventoryRepository: InventoryRepository
@Inject
+ lateinit var userRepository: UserRepository
+ @Inject
lateinit var configManager: AppConfigManager
var adapter: StableRecyclerAdapter? = null
@@ -39,10 +44,10 @@ class StableRecyclerFragment : BaseFragment() {
var user: User? = null
internal var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null
- override var binding: FragmentRecyclerviewBinding? = null
+ override var binding: FragmentRefreshRecyclerviewBinding? = null
- override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRecyclerviewBinding {
- return FragmentRecyclerviewBinding.inflate(inflater, container, false)
+ override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
+ return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@@ -66,7 +71,8 @@ class StableRecyclerFragment : BaseFragment() {
super.onViewCreated(view, savedInstanceState)
binding?.recyclerView?.setEmptyView(binding?.emptyView)
- binding?.emptyView?.text = getString(R.string.empty_items, itemTypeText)
+ binding?.emptyViewTitle?.text = getString(R.string.empty_items, itemTypeText)
+ binding?.refreshLayout?.setOnRefreshListener(this)
layoutManager = androidx.recyclerview.widget.GridLayoutManager(activity, 2)
layoutManager?.spanSizeLookup = object : androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup() {
@@ -243,4 +249,10 @@ class StableRecyclerFragment : BaseFragment() {
private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY"
private const val HEADER_VIEW_TYPE = 0
}
+
+ override fun onRefresh() {
+ compositeSubscription.add(userRepository.retrieveUser(false, true).subscribe({
+ binding?.refreshLayout?.isRefreshing = false
+ }, RxErrorHandler.handleEmptyError()))
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt
index 92002899e..b6c31e634 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt
@@ -7,9 +7,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.databinding.FragmentGuildListBinding
-import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
-import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
-import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.ui.adapter.social.GuildListAdapter
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt
index 3e0a3860a..22d5da5a9 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt
@@ -28,6 +28,7 @@ import com.habitrpg.android.habitica.ui.AvatarView
import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
import com.habitrpg.android.habitica.ui.activities.MainActivity
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
+import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemDialogFragment
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
@@ -73,8 +74,6 @@ class PartyDetailFragment : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
-
-
binding?.refreshLayout?.setOnRefreshListener { this.refreshParty() }
binding?.questAcceptButton?.setOnClickListener { onQuestAccept() }
@@ -320,14 +319,15 @@ class PartyDetailFragment : BaseFragment() {
dialog?.addButton(android.R.string.cancel, false) { _, _ -> activity?.dismissKeyboard() }
dialog?.setTitle(context?.getString(R.string.remove_member_confirm, displayName))
dialog?.show()
+ dialog?.show()
}
private fun inviteNewQuest() {
- val fragment = ItemRecyclerFragment()
+ val fragment = ItemDialogFragment()
fragment.itemType = "quests"
fragment.itemTypeText = getString(R.string.quest)
fragment.isModal = true
- //fragment.show(parentFragmentManager, "questDialog")
+ fragment.show(parentFragmentManager, "questDialog")
}
internal fun leaveParty() {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
index 535bf0ea2..131e6d67e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
@@ -173,7 +173,6 @@ open class TaskRecyclerViewFragment : BaseFragment(), SearchView.O
binding?.viewPager?.adapter = object : FragmentStateAdapter(fragmentManager, lifecycle) {
- override fun createFragment(position: Int): androidx.fragment.app.Fragment {
+ override fun createFragment(position: Int): Fragment {
val fragment: TaskRecyclerViewFragment = when (position) {
0 -> TaskRecyclerViewFragment.newInstance(context, Task.TYPE_HABIT)
1 -> TaskRecyclerViewFragment.newInstance(context, Task.TYPE_DAILY)