Skip to content

Commit be88b69

Browse files
authored
[Teacher][MBL-13254] Fix speed grader crash (#318)
1 parent dc772f1 commit be88b69

3 files changed

Lines changed: 35 additions & 16 deletions

File tree

apps/teacher/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ android {
4444
defaultConfig {
4545
minSdkVersion Versions.MIN_SDK
4646
targetSdkVersion Versions.TARGET_SDK
47-
versionCode = 23
47+
versionCode = 24
4848
versionName = '1.9.0'
4949
vectorDrawables.useSupportLibrary = true
5050
multiDexEnabled true

apps/teacher/src/main/java/com/instructure/teacher/fragments/SpeedGraderGradeFragment.kt

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,10 @@ class SpeedGraderGradeFragment : BasePresenterFragment<SpeedGraderGradePresenter
7979
@Suppress("unused")
8080
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
8181
fun onAssignmentGraded(event: AssignmentGradedEvent) {
82-
event.once(javaClass.simpleName + presenter.submission?.id) {
82+
val submissionId = presenter?.submission?.id ?: return
83+
event.once(javaClass.simpleName + submissionId) {
8384
if(mAssignment.id == it) {
84-
GlobalScope.launch {
85-
// Try to update our submission for post/hide grades
86-
presenter.submission = SubmissionManager.getSingleSubmissionAsync(
87-
presenter.course.id,
88-
presenter.assignment.id,
89-
presenter.submission?.userId ?: return@launch,
90-
true
91-
).await().dataOrNull ?: return@launch
92-
93-
withContext(Dispatchers.Main) {
94-
setupViews()
95-
}
96-
}
85+
presenter?.refreshSubmission()
9786
}
9887
}
9988
}
@@ -242,6 +231,7 @@ class SpeedGraderGradeFragment : BasePresenterFragment<SpeedGraderGradePresenter
242231
addGradeIcon.setGone()
243232
gradeProgressSpinner.announceForAccessibility(getString(R.string.loading))
244233
gradeProgressSpinner.setVisible()
234+
hiddenIcon.setGone()
245235
}
246236

247237
val hasUnsavedChanges: Boolean get() = rubricEditView?.hasUnsavedChanges ?: false

apps/teacher/src/main/java/com/instructure/teacher/presenters/SpeedGraderGradePresenter.kt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ import com.instructure.teacher.events.SubmissionUpdatedEvent
2525
import com.instructure.teacher.events.post
2626
import com.instructure.teacher.viewinterface.SpeedGraderGradeView
2727
import instructure.androidblueprint.FragmentPresenter
28-
import kotlinx.coroutines.Job
28+
import kotlinx.coroutines.*
2929

3030
class SpeedGraderGradePresenter(var submission: Submission?, val assignment: Assignment, val course: Course, val assignee: Assignee) : FragmentPresenter<SpeedGraderGradeView>() {
3131

3232
private var mPostGradeAPICall: Job? = null
33+
private var refreshSubmissionApiCall: Job? = null
3334

3435
@Suppress("EXPERIMENTAL_FEATURE_WARNING")
3536
fun updateGrade(grade: String, isExcused: Boolean) {
@@ -58,6 +59,34 @@ class SpeedGraderGradePresenter(var submission: Submission?, val assignment: Ass
5859
}
5960
}
6061

62+
fun refreshSubmission() {
63+
refreshSubmissionApiCall = GlobalScope.launch(Dispatchers.Main) {
64+
try {
65+
viewCallback?.onRefreshStarted()
66+
67+
// Try to update our submission for post/hide grades
68+
val newSubmission = SubmissionManager.getSingleSubmissionAsync(
69+
course.id,
70+
assignment.id,
71+
submission?.userId ?: return@launch,
72+
true
73+
).await().dataOrNull ?: return@launch
74+
75+
submission = newSubmission
76+
viewCallback?.updateGradeText()
77+
viewCallback?.onRefreshFinished()
78+
} catch (e: Throwable) {
79+
viewCallback?.updateGradeError()
80+
}
81+
}
82+
}
83+
84+
override fun onDestroyed() {
85+
super.onDestroyed()
86+
mPostGradeAPICall?.cancel()
87+
refreshSubmissionApiCall?.cancel()
88+
}
89+
6190
override fun loadData(forceNetwork: Boolean) { }
6291
override fun refresh(forceNetwork: Boolean) { }
6392

0 commit comments

Comments
 (0)