diff --git a/apps/parent/src/main/java/com/instructure/parentapp/features/assignment/details/ParentAssignmentDetailsRouter.kt b/apps/parent/src/main/java/com/instructure/parentapp/features/assignment/details/ParentAssignmentDetailsRouter.kt index 72389da24c..b93966da95 100644 --- a/apps/parent/src/main/java/com/instructure/parentapp/features/assignment/details/ParentAssignmentDetailsRouter.kt +++ b/apps/parent/src/main/java/com/instructure/parentapp/features/assignment/details/ParentAssignmentDetailsRouter.kt @@ -47,13 +47,14 @@ class ParentAssignmentDetailsRouter( assignmentUrl: String?, isAssignmentEnhancementEnabled: Boolean, isObserver: Boolean, - initialSelectedSubmissionAttempt: Long? + initialSelectedSubmissionAttempt: Long?, + isQuiz: Boolean ) { assignmentUrl ?: return val parentId = apiPrefs.user?.id ?: return val currentStudentId = parentPrefs.currentStudent?.id ?: return val cookies = mapOf("k5_observed_user_for_$parentId" to "$currentStudentId") - val url = if (isAssignmentEnhancementEnabled) { + val url = if (isAssignmentEnhancementEnabled && !isQuiz) { assignmentUrl } else { "$assignmentUrl/submissions/$currentStudentId" diff --git a/apps/student/src/main/java/com/instructure/student/features/assignments/details/StudentAssignmentDetailsRouter.kt b/apps/student/src/main/java/com/instructure/student/features/assignments/details/StudentAssignmentDetailsRouter.kt index 085ee40b20..0f217c8b39 100644 --- a/apps/student/src/main/java/com/instructure/student/features/assignments/details/StudentAssignmentDetailsRouter.kt +++ b/apps/student/src/main/java/com/instructure/student/features/assignments/details/StudentAssignmentDetailsRouter.kt @@ -59,7 +59,8 @@ class StudentAssignmentDetailsRouter: AssignmentDetailsRouter() { assignmentUrl: String?, isAssignmentEnhancementEnabled: Boolean, isObserver: Boolean, - initialSelectedSubmissionAttempt: Long? + initialSelectedSubmissionAttempt: Long?, + isQuiz: Boolean ) { RouteMatcher.route( activity, diff --git a/libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/Assignment.kt b/libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/Assignment.kt index 8e427574ee..468b004053 100644 --- a/libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/Assignment.kt +++ b/libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/Assignment.kt @@ -253,6 +253,10 @@ data class Assignment( } ?: LtiType.EXTERNAL_TOOL } + fun isQuiz(): Boolean { + return getSubmissionTypes().contains(SubmissionType.ONLINE_QUIZ) || ltiToolType() == LtiType.NEW_QUIZZES_LTI + } + companion object { const val PASS_FAIL_TYPE = "pass_fail" diff --git a/libs/canvas-api-2/src/test/java/com/instructure/canvasapi2/unit/AssignmentTest.kt b/libs/canvas-api-2/src/test/java/com/instructure/canvasapi2/unit/AssignmentTest.kt index 81185b1e4c..5ba712a56b 100644 --- a/libs/canvas-api-2/src/test/java/com/instructure/canvasapi2/unit/AssignmentTest.kt +++ b/libs/canvas-api-2/src/test/java/com/instructure/canvasapi2/unit/AssignmentTest.kt @@ -290,4 +290,38 @@ class AssignmentTest { } //endregion + //region isQuiz + @Test + fun isQuiz_TestOnlineQuiz() { + val assignment = Assignment(submissionTypesRaw = listOf("online_quiz")) + assertEquals(true, assignment.isQuiz()) + } + + @Test + fun isQuiz_TestQuizLtiAssignment() { + val externalToolAttributes = ExternalToolAttributes(url = "https://example.com/quiz-lti/launch") + val assignment = Assignment( + submissionTypesRaw = listOf("external_tool"), + externalToolAttributes = externalToolAttributes + ) + assertEquals(true, assignment.isQuiz()) + } + + @Test + fun isQuiz_TestRegularExternalTool() { + val externalToolAttributes = ExternalToolAttributes(url = "https://example.com/tool/launch") + val assignment = Assignment( + submissionTypesRaw = listOf("external_tool"), + externalToolAttributes = externalToolAttributes + ) + assertEquals(false, assignment.isQuiz()) + } + + @Test + fun isQuiz_TestNonQuizSubmissionType() { + val assignment = Assignment(submissionTypesRaw = listOf("online_upload")) + assertEquals(false, assignment.isQuiz()) + } + //endregion + } diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsFragment.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsFragment.kt index 65abd75138..2aac0b39f0 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsFragment.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsFragment.kt @@ -215,7 +215,8 @@ class AssignmentDetailsFragment : BaseCanvasFragment(), FragmentInteractions, Bo action.assignmentUrl, action.isAssignmentEnhancementEnabled, action.isObserver, - action.selectedSubmissionAttempt + action.selectedSubmissionAttempt, + action.isQuiz ) } is AssignmentDetailAction.NavigateToQuizScreen -> { diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsRouter.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsRouter.kt index 4f76e64761..2d33d43ae4 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsRouter.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsRouter.kt @@ -40,7 +40,8 @@ open class AssignmentDetailsRouter { assignmentUrl: String?, isAssignmentEnhancementEnabled: Boolean, isObserver: Boolean = false, - initialSelectedSubmissionAttempt: Long? = null + initialSelectedSubmissionAttempt: Long? = null, + isQuiz: Boolean = false ) = Unit open fun navigateToQuizScreen(activity: FragmentActivity, canvasContext: CanvasContext, quiz: Quiz, url: String) = Unit diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewData.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewData.kt index c5a904087d..bebad91e08 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewData.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewData.kt @@ -70,7 +70,8 @@ sealed class AssignmentDetailAction { val isObserver: Boolean, val selectedSubmissionAttempt: Long?, val assignmentUrl: String?, - val isAssignmentEnhancementEnabled: Boolean + val isAssignmentEnhancementEnabled: Boolean, + val isQuiz: Boolean ) : AssignmentDetailAction() data class NavigateToQuizScreen(val quiz: Quiz) : AssignmentDetailAction() data class NavigateToDiscussionScreen(val discussionTopicHeaderId: Long, val course: Course) : AssignmentDetailAction() diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModel.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModel.kt index 654d3c0392..3595742e50 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModel.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModel.kt @@ -246,7 +246,8 @@ class AssignmentDetailsViewModel @Inject constructor( isObserver, submission.attempt, assignmentResult.htmlUrl, - isAssignmentEnhancementEnabled + isAssignmentEnhancementEnabled, + assignmentResult.isQuiz() ) ) } @@ -547,7 +548,8 @@ class AssignmentDetailsViewModel @Inject constructor( isObserver, selectedSubmission?.attempt, assignment?.htmlUrl, - isAssignmentEnhancementEnabled + isAssignmentEnhancementEnabled, + assignment?.isQuiz() == true ) ) } diff --git a/libs/pandautils/src/test/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModelTest.kt b/libs/pandautils/src/test/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModelTest.kt index ba029c2f42..c460e0bb04 100644 --- a/libs/pandautils/src/test/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModelTest.kt +++ b/libs/pandautils/src/test/java/com/instructure/pandautils/features/assignments/details/AssignmentDetailsViewModelTest.kt @@ -496,7 +496,8 @@ class AssignmentDetailsViewModelTest { isObserver = false, selectedSubmissionAttempt = null, assignmentUrl = "https://assignment.url", - isAssignmentEnhancementEnabled = true + isAssignmentEnhancementEnabled = true, + isQuiz = false ) assertEquals(expected, viewModel.events.value?.peekContent()) } @@ -1029,7 +1030,8 @@ class AssignmentDetailsViewModelTest { isObserver = false, selectedSubmissionAttempt = 2L, assignmentUrl = "https://assignment.url", - isAssignmentEnhancementEnabled = true + isAssignmentEnhancementEnabled = true, + isQuiz = false ) assertEquals(expected, viewModel.events.value?.peekContent()) }