mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-23 22:27:15 +00:00
Merge pull request #1812 from HabitRPG/Hafiz/blank-tasklist-fix
Blank tasklist view fix
This commit is contained in:
commit
f9da43f7db
3 changed files with 20 additions and 25 deletions
|
|
@ -20,7 +20,6 @@ import com.habitrpg.android.habitica.ui.activities.MainActivity
|
|||
import com.habitrpg.android.habitica.ui.activities.SkillMemberActivity
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.RewardsRecyclerViewAdapter
|
||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.TasksViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||
import io.reactivex.rxjava3.functions.Consumer
|
||||
|
||||
|
|
@ -78,7 +77,7 @@ class RewardsRecyclerviewFragment : TaskRecyclerViewFragment() {
|
|||
)?.let { compositeSubscription.add(it) }
|
||||
recyclerAdapter?.brokenTaskEvents?.subscribeWithErrorHandler { showBrokenChallengeDialog(it) }?.let { compositeSubscription.add(it) }
|
||||
|
||||
viewModel?.user?.observe(viewLifecycleOwner) {
|
||||
viewModel.user.observe(viewLifecycleOwner) {
|
||||
(recyclerAdapter as? RewardsRecyclerViewAdapter)?.user = it
|
||||
}
|
||||
}
|
||||
|
|
@ -138,9 +137,8 @@ class RewardsRecyclerviewFragment : TaskRecyclerViewFragment() {
|
|||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance(context: Context?, classType: TaskType, showCustomRewards: Boolean, viewModel: TasksViewModel): RewardsRecyclerviewFragment {
|
||||
fun newInstance(context: Context?, classType: TaskType, showCustomRewards: Boolean): RewardsRecyclerviewFragment {
|
||||
val fragment = RewardsRecyclerviewFragment()
|
||||
fragment.viewModel = viewModel
|
||||
fragment.taskType = classType
|
||||
fragment.showCustomRewards = showCustomRewards
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
|
@ -58,7 +59,7 @@ import javax.inject.Inject
|
|||
|
||||
open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBinding>(), androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener {
|
||||
private var taskFlowJob: Job? = null
|
||||
var viewModel: TasksViewModel? = null
|
||||
val viewModel: TasksViewModel by viewModels({requireParentFragment()})
|
||||
|
||||
internal var canEditTasks: Boolean = true
|
||||
internal var canScoreTaks: Boolean = true
|
||||
|
|
@ -102,10 +103,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
recyclerSubscription.dispose()
|
||||
}
|
||||
recyclerSubscription = CompositeDisposable()
|
||||
if (viewModel == null && parentFragment is TasksFragment) {
|
||||
viewModel = (parentFragment as TasksFragment).viewModel
|
||||
}
|
||||
viewModel?.let { viewModel ->
|
||||
viewModel.let { viewModel ->
|
||||
val adapter: BaseRecyclerViewAdapter<*, *>? = when (this.taskType) {
|
||||
TaskType.HABIT -> HabitsRecyclerViewAdapter(R.layout.habit_item_card, viewModel)
|
||||
TaskType.DAILY -> DailiesRecyclerViewHolder(R.layout.daily_item_card, viewModel)
|
||||
|
|
@ -145,9 +143,9 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
recyclerAdapter?.brokenTaskEvents?.subscribeWithErrorHandler { showBrokenChallengeDialog(it) }?.let { recyclerSubscription.add(it) }
|
||||
recyclerAdapter?.adventureGuideOpenEvents?.subscribeWithErrorHandler { MainNavigationController.navigate(R.id.adventureGuideActivity) }?.let { recyclerSubscription.add(it) }
|
||||
|
||||
viewModel?.ownerID?.observe(viewLifecycleOwner) {
|
||||
canEditTasks = viewModel?.isPersonalBoard ?: true
|
||||
canScoreTaks = viewModel?.isPersonalBoard ?: true
|
||||
viewModel.ownerID.observe(viewLifecycleOwner) {
|
||||
canEditTasks = viewModel.isPersonalBoard ?: true
|
||||
canScoreTaks = viewModel.isPersonalBoard ?: true
|
||||
recyclerAdapter?.canScoreTasks = canScoreTaks
|
||||
updateTaskSubscription(it)
|
||||
}
|
||||
|
|
@ -272,7 +270,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
) {
|
||||
if (validTaskId != null) {
|
||||
var newPosition = viewHolder.bindingAdapterPosition
|
||||
if ((viewModel?.filterCount(taskType) ?: 0) > 0) {
|
||||
if ((viewModel.filterCount(taskType) ?: 0) > 0) {
|
||||
newPosition = if ((newPosition + 1) == recyclerAdapter?.data?.size) {
|
||||
recyclerAdapter?.data?.get(newPosition - 1)?.position ?: newPosition
|
||||
} else {
|
||||
|
|
@ -372,7 +370,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
}
|
||||
|
||||
private fun setEmptyLabels() {
|
||||
binding?.recyclerView?.emptyItem = if ((viewModel?.filterCount(taskType) ?: 0) > 0) {
|
||||
binding?.recyclerView?.emptyItem = if ((viewModel.filterCount(taskType) ?: 0) > 0) {
|
||||
when (this.taskType) {
|
||||
TaskType.HABIT -> {
|
||||
EmptyItem(
|
||||
|
|
@ -440,7 +438,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
}
|
||||
|
||||
private fun scoreTask(task: Task, direction: TaskDirection) {
|
||||
viewModel?.scoreTask(task, direction) { result, value ->
|
||||
viewModel.scoreTask(task, direction) { result, value ->
|
||||
handleTaskResult(result, value)
|
||||
}
|
||||
}
|
||||
|
|
@ -455,7 +453,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
|
||||
override fun onRefresh() {
|
||||
binding?.refreshLayout?.isRefreshing = true
|
||||
viewModel?.refreshData {
|
||||
viewModel.refreshData {
|
||||
binding?.refreshLayout?.isRefreshing = false
|
||||
}
|
||||
}
|
||||
|
|
@ -465,13 +463,13 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
(activity as? MainActivity)?.viewModel?.user?.observeOnce(this) {
|
||||
if (it != null) {
|
||||
when (taskType) {
|
||||
TaskType.TODO -> viewModel?.setActiveFilter(
|
||||
TaskType.TODO -> viewModel.setActiveFilter(
|
||||
TaskType.TODO,
|
||||
Task.FILTER_ACTIVE
|
||||
)
|
||||
TaskType.DAILY -> {
|
||||
if (it.isValid && it.preferences?.dailyDueDefaultView == true) {
|
||||
viewModel?.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE)
|
||||
viewModel.setActiveFilter(TaskType.DAILY, Task.FILTER_ACTIVE)
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
|
|
@ -488,7 +486,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
}
|
||||
|
||||
fun setActiveFilter(activeFilter: String) {
|
||||
viewModel?.setActiveFilter(taskType, activeFilter)
|
||||
viewModel.setActiveFilter(taskType, activeFilter)
|
||||
recyclerAdapter?.filter()
|
||||
|
||||
setEmptyLabels()
|
||||
|
|
@ -519,10 +517,9 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
|
|||
companion object {
|
||||
private const val CLASS_TYPE_KEY = "CLASS_TYPE_KEY"
|
||||
|
||||
fun newInstance(context: Context?, classType: TaskType, viewModel: TasksViewModel): TaskRecyclerViewFragment {
|
||||
fun newInstance(context: Context?, classType: TaskType): TaskRecyclerViewFragment {
|
||||
val fragment = TaskRecyclerViewFragment()
|
||||
fragment.taskType = classType
|
||||
fragment.viewModel = viewModel
|
||||
var tutorialTexts: List<String>? = null
|
||||
if (context != null) {
|
||||
when (fragment.taskType) {
|
||||
|
|
|
|||
|
|
@ -217,10 +217,10 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
|
|||
binding?.viewPager?.adapter = object : FragmentStateAdapter(fragmentManager, lifecycle) {
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
val fragment: TaskRecyclerViewFragment = when (position) {
|
||||
0 -> TaskRecyclerViewFragment.newInstance(context, TaskType.HABIT, viewModel)
|
||||
1 -> TaskRecyclerViewFragment.newInstance(context, TaskType.DAILY, viewModel)
|
||||
3 -> RewardsRecyclerviewFragment.newInstance(context, TaskType.REWARD, true, viewModel)
|
||||
else -> TaskRecyclerViewFragment.newInstance(context, TaskType.TODO, viewModel)
|
||||
0 -> TaskRecyclerViewFragment.newInstance(context, TaskType.HABIT)
|
||||
1 -> TaskRecyclerViewFragment.newInstance(context, TaskType.DAILY)
|
||||
3 -> RewardsRecyclerviewFragment.newInstance(context, TaskType.REWARD, true)
|
||||
else -> TaskRecyclerViewFragment.newInstance(context, TaskType.TODO)
|
||||
}
|
||||
viewFragmentsDictionary?.put(position, fragment)
|
||||
return fragment
|
||||
|
|
|
|||
Loading…
Reference in a new issue