Skip to content

Commit 33cc6d5

Browse files
committed
Added refreshing to Assignment list on grading
1 parent fee9667 commit 33cc6d5

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/list/AssignmentListFragment.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,16 @@ import com.instructure.pandautils.analytics.SCREEN_VIEW_ASSIGNMENT_LIST
3939
import com.instructure.pandautils.analytics.ScreenView
4040
import com.instructure.pandautils.base.BaseCanvasFragment
4141
import com.instructure.pandautils.features.assignments.list.composables.AssignmentListScreen
42+
import com.instructure.pandautils.utils.AssignmentGradedEvent
4243
import com.instructure.pandautils.utils.Const
4344
import com.instructure.pandautils.utils.ViewStyler
4445
import com.instructure.pandautils.utils.collectOneOffEvents
4546
import com.instructure.pandautils.utils.color
4647
import com.instructure.pandautils.utils.withArgs
4748
import dagger.hilt.android.AndroidEntryPoint
49+
import org.greenrobot.eventbus.EventBus
50+
import org.greenrobot.eventbus.Subscribe
51+
import org.greenrobot.eventbus.ThreadMode
4852
import javax.inject.Inject
4953

5054
@ScreenView(SCREEN_VIEW_ASSIGNMENT_LIST)
@@ -58,6 +62,16 @@ class AssignmentListFragment: BaseCanvasFragment(), Bookmarkable {
5862

5963
override val bookmark: Bookmarker by lazy { viewModel.bookmarker }
6064

65+
override fun onStart() {
66+
super.onStart()
67+
EventBus.getDefault().register(this)
68+
}
69+
70+
override fun onStop() {
71+
super.onStop()
72+
EventBus.getDefault().unregister(this)
73+
}
74+
6175
override fun onCreateView(
6276
inflater: LayoutInflater,
6377
container: ViewGroup?,
@@ -100,6 +114,14 @@ class AssignmentListFragment: BaseCanvasFragment(), Bookmarkable {
100114
return getString(R.string.assignmentListTitle)
101115
}
102116

117+
@Suppress("unused")
118+
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
119+
fun onAssignmentGraded(event: AssignmentGradedEvent) {
120+
event.once(javaClass.simpleName) {
121+
viewModel.handleAction(AssignmentListScreenEvent.Refresh)
122+
}
123+
}
124+
103125
companion object {
104126
fun newInstance(): AssignmentListFragment {
105127
return AssignmentListFragment()

libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/list/AssignmentListViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import com.instructure.pandautils.utils.orderedCheckpoints
4949
import com.instructure.pandautils.utils.toFormattedString
5050
import dagger.hilt.android.lifecycle.HiltViewModel
5151
import kotlinx.coroutines.Deferred
52+
import kotlinx.coroutines.Job
5253
import kotlinx.coroutines.async
5354
import kotlinx.coroutines.channels.Channel
5455
import kotlinx.coroutines.flow.MutableStateFlow
@@ -79,6 +80,8 @@ class AssignmentListViewModel @Inject constructor(
7980

8081
private var customStatuses = listOf<CustomGradeStatusesQuery.Node>()
8182

83+
private var loadJob: Job? = null
84+
8285
init {
8386
getAssignments(false)
8487
}
@@ -88,8 +91,9 @@ class AssignmentListViewModel @Inject constructor(
8891
}
8992

9093
private fun getAssignments(forceRefresh: Boolean = false) {
94+
loadJob?.cancel()
9195
if (courseId != null) {
92-
viewModelScope.tryLaunch {
96+
loadJob = viewModelScope.tryLaunch {
9397
val course = repository.getCourse(courseId, forceRefresh)
9498
customStatuses = repository.getCustomGradeStatuses(courseId, forceRefresh)
9599
bookmarker = Bookmarker(true, course)

0 commit comments

Comments
 (0)