@@ -81,8 +81,10 @@ internal class MediaSendViewModel @Inject constructor(
8181 // Report errors if they occurred
8282 if (errors.contains(Error .ITEM_TOO_LARGE )) {
8383 error.setValue(Error .ITEM_TOO_LARGE )
84- } else if (errors.contains(Error .INVALID_TYPE )) {
85- error.setValue(Error .INVALID_TYPE )
84+ } else if (errors.contains(Error .INVALID_TYPE_ONLY )) {
85+ error.setValue(Error .INVALID_TYPE_ONLY )
86+ }else if (errors.contains(Error .MIXED_TYPE )) {
87+ error.setValue(Error .MIXED_TYPE )
8688 }
8789
8890 if (filteredMedia.size > MAX_SELECTED_FILES ) {
@@ -125,8 +127,10 @@ internal class MediaSendViewModel @Inject constructor(
125127 if (filteredMedia.isEmpty()) {
126128 if (errors.contains(Error .ITEM_TOO_LARGE )) {
127129 error.setValue(Error .ITEM_TOO_LARGE )
128- } else if (errors.contains(Error .INVALID_TYPE )) {
129- error.setValue(Error .INVALID_TYPE )
130+ } else if (errors.contains(Error .INVALID_TYPE_ONLY )) {
131+ error.setValue(Error .INVALID_TYPE_ONLY )
132+ }else if (errors.contains(Error .MIXED_TYPE )) {
133+ error.setValue(Error .MIXED_TYPE )
130134 }
131135 bucketId.setValue(Media .ALL_MEDIA_BUCKET_ID )
132136 } else {
@@ -323,14 +327,29 @@ internal class MediaSendViewModel @Inject constructor(
323327 val validMedia = ArrayList <Media >()
324328 val errors = HashSet <Error >()
325329
330+ // when sharing multiple media, only certain types are valid: images and video
331+ // currently we can't multi-share other types
332+ val validMultiMediaCount = media.count {
333+ MediaUtil .isGif(it.mimeType)
334+ || MediaUtil .isImageType(it.mimeType)
335+ || MediaUtil .isVideoType(it.mimeType)
336+ }
337+
338+ // if there are no valid types at all, return early
339+ if (validMultiMediaCount == 0 ){
340+ errors.add(Error .INVALID_TYPE_ONLY )
341+ return Pair (validMedia, errors)
342+ }
343+
344+
326345 for (m in media) {
327346 val isGif = MediaUtil .isGif(m.mimeType)
328- val isImage = MediaUtil .isImageType(m.mimeType)
329347 val isVideo = MediaUtil .isVideoType(m.mimeType)
348+ val isImage = MediaUtil .isImageType(m.mimeType)
330349
331- // Check Type
350+ // Check Type - Not a valid multi share?
332351 if (! isGif && ! isImage && ! isVideo) {
333- errors.add(Error .INVALID_TYPE )
352+ errors.add(Error .MIXED_TYPE )
334353 continue
335354 }
336355
@@ -370,7 +389,7 @@ internal class MediaSendViewModel @Inject constructor(
370389 }
371390
372391 internal enum class Error {
373- ITEM_TOO_LARGE , TOO_MANY_ITEMS , INVALID_TYPE
392+ ITEM_TOO_LARGE , TOO_MANY_ITEMS , INVALID_TYPE_ONLY , MIXED_TYPE
374393 }
375394
376395 internal class CountButtonState (val count : Int , private val visibility : Visibility ) {
0 commit comments