Skip to content

Commit a997e5c

Browse files
[MBL-19871][All] Fix media attachments not appearing in Inbox
refs: MBL-19871 affects: Student, Teacher, Parent release note: Fixed an issue where media attachments sent via Inbox were not visible or playable on Android devices.
1 parent 578f812 commit a997e5c

13 files changed

Lines changed: 84 additions & 11 deletions

File tree

apps/parent/src/main/java/com/instructure/parentapp/features/inbox/list/ParentInboxRouter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.fragment.app.FragmentActivity
2222
import com.instructure.canvasapi2.apis.InboxApi
2323
import com.instructure.canvasapi2.models.Attachment
2424
import com.instructure.canvasapi2.models.Conversation
25+
import com.instructure.canvasapi2.models.MediaComment
2526
import com.instructure.pandautils.features.inbox.list.InboxRouter
2627
import com.instructure.pandautils.features.inbox.utils.InboxComposeOptions
2728
import com.instructure.pandautils.utils.FileDownloader
@@ -63,6 +64,10 @@ class ParentInboxRouter(
6364
fileDownloader.downloadFileToDevice(attachment)
6465
}
6566

67+
override fun routeToMediaAttachment(mediaComment: MediaComment) {
68+
fileDownloader.downloadFileToDevice(mediaComment.url, mediaComment.displayName, mediaComment.contentType)
69+
}
70+
6671
override fun popDetailsScreen(activity: FragmentActivity?) {
6772
activity?.onBackPressed()
6873
}

apps/student/src/main/java/com/instructure/student/features/inbox/list/StudentInboxRouter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.fragment.app.FragmentActivity
2222
import com.instructure.canvasapi2.apis.InboxApi
2323
import com.instructure.canvasapi2.models.Attachment
2424
import com.instructure.canvasapi2.models.Conversation
25+
import com.instructure.canvasapi2.models.MediaComment
2526
import com.instructure.pandautils.features.inbox.compose.InboxComposeFragment
2627
import com.instructure.pandautils.features.inbox.details.InboxDetailsFragment
2728
import com.instructure.pandautils.features.inbox.list.InboxFragment
@@ -62,6 +63,10 @@ class StudentInboxRouter(private val activity: FragmentActivity, private val fra
6263
openMedia(activity, attachment.url)
6364
}
6465

66+
override fun routeToMediaAttachment(mediaComment: MediaComment) {
67+
openMedia(activity, mediaComment.url)
68+
}
69+
6570
override fun popDetailsScreen(activity: FragmentActivity?) {
6671
activity?.onBackPressed()
6772
}

apps/teacher/src/main/java/com/instructure/teacher/features/inbox/list/TeacherInboxRouter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.instructure.canvasapi2.models.Attachment
2424
import com.instructure.canvasapi2.models.CanvasContext
2525
import com.instructure.canvasapi2.models.Conversation
2626
import com.instructure.canvasapi2.models.Course
27+
import com.instructure.canvasapi2.models.MediaComment
2728
import com.instructure.canvasapi2.utils.ApiPrefs
2829
import com.instructure.interactions.router.Route
2930
import com.instructure.pandautils.features.inbox.compose.InboxComposeFragment
@@ -86,6 +87,10 @@ class TeacherInboxRouter(private val activity: FragmentActivity, private val fra
8687
openMedia(activity, attachment.url)
8788
}
8889

90+
override fun routeToMediaAttachment(mediaComment: MediaComment) {
91+
openMedia(activity, mediaComment.url)
92+
}
93+
8994
override fun popDetailsScreen(activity: FragmentActivity?) {
9095
if (activity == null) return
9196

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/details/InboxDetailsFragment.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ class InboxDetailsFragment : BaseCanvasFragment(), FragmentInteractions {
127127
is InboxDetailsFragmentAction.OpenAttachment -> {
128128
inboxRouter.routeToAttachment(action.attachment)
129129
}
130+
is InboxDetailsFragmentAction.OpenMediaAttachment -> {
131+
inboxRouter.routeToMediaAttachment(action.mediaComment)
132+
}
130133
is InboxDetailsFragmentAction.UpdateParentFragment -> {
131134
sharedEvents.sendEvent(lifecycleScope, InboxSharedAction.RefreshListScreen)
132135
}

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/details/InboxDetailsUiState.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package com.instructure.pandautils.features.inbox.details
1717

1818
import com.instructure.canvasapi2.models.Attachment
1919
import com.instructure.canvasapi2.models.Conversation
20+
import com.instructure.canvasapi2.models.MediaComment
2021
import com.instructure.canvasapi2.models.Message
2122
import com.instructure.pandautils.features.inbox.utils.InboxComposeOptions
2223
import com.instructure.pandautils.features.inbox.utils.InboxMessageUiState
@@ -50,6 +51,7 @@ sealed class InboxDetailsFragmentAction {
5051
data class ShowScreenResult(val message: String) : InboxDetailsFragmentAction()
5152
data class UrlSelected(val url: String) : InboxDetailsFragmentAction()
5253
data class OpenAttachment(val attachment: Attachment) : InboxDetailsFragmentAction()
54+
data class OpenMediaAttachment(val mediaComment: MediaComment) : InboxDetailsFragmentAction()
5355
data object UpdateParentFragment : InboxDetailsFragmentAction()
5456
data class NavigateToCompose(val options: InboxComposeOptions) : InboxDetailsFragmentAction()
5557
}

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/details/InboxDetailsViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ class InboxDetailsViewModel @Inject constructor(
8888
_events.send(InboxDetailsFragmentAction.OpenAttachment(action.attachment))
8989
}
9090
}
91+
is MessageAction.OpenMediaAttachment -> {
92+
viewModelScope.launch {
93+
_events.send(InboxDetailsFragmentAction.OpenMediaAttachment(action.mediaComment))
94+
}
95+
}
9196
is MessageAction.UrlSelected -> {
9297
viewModelScope.launch {
9398
_events.send(InboxDetailsFragmentAction.UrlSelected(action.url))

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/list/InboxRouter.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.fragment.app.FragmentActivity
2121
import com.instructure.canvasapi2.apis.InboxApi
2222
import com.instructure.canvasapi2.models.Attachment
2323
import com.instructure.canvasapi2.models.Conversation
24+
import com.instructure.canvasapi2.models.MediaComment
2425
import com.instructure.pandautils.features.inbox.utils.InboxComposeOptions
2526

2627
interface InboxRouter {
@@ -37,5 +38,7 @@ interface InboxRouter {
3738

3839
fun routeToAttachment(attachment: Attachment)
3940

41+
fun routeToMediaAttachment(mediaComment: MediaComment)
42+
4043
fun popDetailsScreen(activity: FragmentActivity?)
4144
}

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/utils/AttachmentCard.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,15 @@ fun AttachmentCard(
117117
overflow = TextOverflow.Ellipsis
118118
)
119119

120-
Spacer(Modifier.height(8.dp))
120+
if (attachmentCardItem.showFileSize) {
121+
Spacer(Modifier.height(8.dp))
121122

122-
Text(
123-
Formatter.formatFileSize(LocalContext.current, attachment.size),
124-
color = colorResource(id = R.color.textDark),
125-
fontSize = 14.sp,
126-
)
123+
Text(
124+
Formatter.formatFileSize(LocalContext.current, attachment.size),
125+
color = colorResource(id = R.color.textDark),
126+
fontSize = 14.sp,
127+
)
128+
}
127129
}
128130

129131
Spacer(modifier = Modifier.width(8.dp))

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/utils/AttachmentCardItem.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ data class AttachmentCardItem (
2323
val status: AttachmentStatus, // TODO: Currently this is not used for proper state handling, but if the upload process will be refactored it can be useful
2424
val readOnly: Boolean,
2525
val uploadProgress: Float? = null, // Upload progress from 0.0 to 1.0, null if not uploading
26-
val workerId: String? = null // WorkManager UUID to track which upload this belongs to
26+
val workerId: String? = null, // WorkManager UUID to track which upload this belongs to
27+
val showFileSize: Boolean = true
2728
)
2829

2930
enum class AttachmentStatus {

libs/pandautils/src/main/java/com/instructure/pandautils/features/inbox/utils/InboxMessageUiState.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package com.instructure.pandautils.features.inbox.utils
1717

1818
import com.instructure.canvasapi2.models.Attachment
1919
import com.instructure.canvasapi2.models.BasicUser
20+
import com.instructure.canvasapi2.models.MediaComment
2021
import com.instructure.canvasapi2.models.Message
2122

2223
data class InboxMessageUiState(
@@ -35,5 +36,6 @@ sealed class MessageAction {
3536
data class Forward(val message: Message) : MessageAction()
3637
data class DeleteMessage(val message: Message) : MessageAction()
3738
data class OpenAttachment(val attachment: Attachment) : MessageAction()
39+
data class OpenMediaAttachment(val mediaComment: MediaComment) : MessageAction()
3840
data class UrlSelected(val url: String) : MessageAction()
3941
}

0 commit comments

Comments
 (0)