mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 00:29:11 +01:00
Prevent sending videos over 30s in length to a story.
This commit is contained in:
committed by
Greyson Parrelli
parent
fa13b464f8
commit
043f06e188
@@ -12,6 +12,7 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import org.signal.core.util.BreakIteratorCompat;
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey;
|
||||
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
||||
import org.thoughtcrime.securesms.database.model.Mention;
|
||||
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
|
||||
import org.thoughtcrime.securesms.mediasend.Media;
|
||||
@@ -26,6 +27,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public final class MultiShareArgs implements Parcelable {
|
||||
@@ -150,7 +152,10 @@ public final class MultiShareArgs implements Parcelable {
|
||||
|
||||
public boolean isValidForStories() {
|
||||
return isTextStory ||
|
||||
!media.isEmpty() && media.stream().allMatch(m -> MediaUtil.isImageOrVideoType(m.getMimeType()) && !MediaUtil.isGif(m.getMimeType())) ||
|
||||
!media.isEmpty() && media.stream().allMatch(
|
||||
m -> MediaUtil.isImageOrVideoType(m.getMimeType()) &&
|
||||
isValidStoryDuration(m)
|
||||
) ||
|
||||
MediaUtil.isImageType(dataType) ||
|
||||
MediaUtil.isVideoType(dataType) ||
|
||||
isValidForTextStoryGeneration();
|
||||
@@ -160,6 +165,25 @@ public final class MultiShareArgs implements Parcelable {
|
||||
return !isTextStory;
|
||||
}
|
||||
|
||||
public static boolean isValidStoryDuration(@NonNull Media media) {
|
||||
if (MediaUtil.isVideoType(media.getMimeType())) {
|
||||
if (media.getDuration() > 0 && media.getDuration() <= Stories.MAX_VIDEO_DURATION_MILLIS) {
|
||||
return true;
|
||||
} else if (media.getTransformProperties().isPresent()) {
|
||||
AttachmentDatabase.TransformProperties transformProperties = media.getTransformProperties().get();
|
||||
if (transformProperties.isVideoTrim()) {
|
||||
return transformProperties.getVideoTrimEndTimeUs() - transformProperties.getVideoTrimStartTimeUs() <= TimeUnit.MILLISECONDS.toMicros(Stories.MAX_VIDEO_DURATION_MILLIS);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isValidForTextStoryGeneration() {
|
||||
if (isTextStory || !media.isEmpty()) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user