Skip to content

Commit ca8142a

Browse files
committed
New logic and strings
1 parent 9e1c731 commit ca8142a

File tree

2 files changed

+38
-12
lines changed

2 files changed

+38
-12
lines changed

app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendActivity.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import android.view.animation.OvershootInterpolator
1414
import android.view.animation.ScaleAnimation
1515
import android.widget.Toast
1616
import androidx.activity.viewModels
17-
import androidx.core.content.ContentProviderCompat.requireContext
1817
import androidx.core.view.ViewGroupCompat
1918
import androidx.fragment.app.Fragment
2019
import androidx.fragment.app.FragmentManager
@@ -33,7 +32,6 @@ import org.session.libsession.utilities.concurrent.SimpleTask
3332
import org.session.libsession.utilities.recipients.Recipient
3433
import org.session.libsignal.utilities.Log
3534
import org.thoughtcrime.securesms.ScreenLockActionBarActivity
36-
import org.thoughtcrime.securesms.conversation.v2.utilities.AttachmentManager
3735
import org.thoughtcrime.securesms.database.RecipientRepository
3836
import org.thoughtcrime.securesms.mediasend.MediaSendViewModel.CountButtonState
3937
import org.thoughtcrime.securesms.permissions.Permissions
@@ -320,9 +318,18 @@ class MediaSendActivity : ScreenLockActionBarActivity(), MediaPickerFolderFragme
320318
) { error: MediaSendViewModel.Error? ->
321319
if (error == null) return@observe
322320
when (error) {
323-
MediaSendViewModel.Error.INVALID_TYPE -> Toast.makeText(
321+
MediaSendViewModel.Error.INVALID_TYPE_ONLY -> Toast.makeText(
324322
this,
325-
"You can only share multiple images or videos", //TODO NEED A CROWDIN STRING
323+
Phrase.from(
324+
this,
325+
R.string.sharingSupportMultipleMedia
326+
).put(APP_NAME_KEY, getString(R.string.app_name)).format().toString(),
327+
Toast.LENGTH_LONG
328+
).show()
329+
330+
MediaSendViewModel.Error.MIXED_TYPE -> Toast.makeText(
331+
this,
332+
R.string.sharingSupportMultipleMediaExcluded,
326333
Toast.LENGTH_LONG
327334
).show()
328335

app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.kt

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)