mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-23 18:30:20 +01:00
Respect proper media upload requirements for stories.
This commit is contained in:
committed by
Greyson Parrelli
parent
92201dcd90
commit
ba7319e215
@@ -88,10 +88,13 @@ class MediaSelectionRepository(context: Context) {
|
||||
throw IllegalStateException("No selected media!")
|
||||
}
|
||||
|
||||
val isSendingToStories = singleContact?.isStory == true || contacts.any { it.isStory }
|
||||
val sentMediaQuality = if (isSendingToStories) SentMediaQuality.STANDARD else quality
|
||||
|
||||
return Maybe.create<MediaSendActivityResult> { emitter ->
|
||||
val trimmedBody: String = if (isViewOnce) "" else getTruncatedBody(message?.toString()?.trim()) ?: ""
|
||||
val trimmedMentions: List<Mention> = if (isViewOnce) emptyList() else mentions
|
||||
val modelsToTransform: Map<Media, MediaTransform> = buildModelsToTransform(selectedMedia, stateMap, quality)
|
||||
val modelsToTransform: Map<Media, MediaTransform> = buildModelsToTransform(selectedMedia, stateMap, sentMediaQuality)
|
||||
val oldToNewMediaMap: Map<Media, Media> = MediaRepository.transformMediaSync(context, selectedMedia, modelsToTransform)
|
||||
val updatedMedia = oldToNewMediaMap.values.toList()
|
||||
|
||||
@@ -128,7 +131,7 @@ class MediaSelectionRepository(context: Context) {
|
||||
)
|
||||
}
|
||||
|
||||
val clippedVideosForStories: List<Media> = if (singleContact?.isStory == true || contacts.any { it.isStory }) {
|
||||
val clippedVideosForStories: List<Media> = if (isSendingToStories) {
|
||||
updatedMedia.filter {
|
||||
Stories.MediaTransform.getSendRequirements(it) == Stories.MediaTransform.SendRequirements.REQUIRES_CLIP
|
||||
}.map { media ->
|
||||
@@ -136,20 +139,12 @@ class MediaSelectionRepository(context: Context) {
|
||||
}.flatten()
|
||||
} else emptyList()
|
||||
|
||||
val lowResImagesForStories: List<Media> = if (singleContact?.isStory == true || contacts.any { it.isStory }) {
|
||||
updatedMedia.filter {
|
||||
Stories.MediaTransform.hasHighQualityTransform(it)
|
||||
}.map {
|
||||
Media.stripTransform(it)
|
||||
}
|
||||
} else emptyList()
|
||||
|
||||
uploadRepository.applyMediaUpdates(oldToNewMediaMap, singleRecipient)
|
||||
uploadRepository.updateCaptions(updatedMedia)
|
||||
uploadRepository.updateDisplayOrder(updatedMedia)
|
||||
uploadRepository.getPreUploadResults { uploadResults ->
|
||||
if (contacts.isNotEmpty()) {
|
||||
sendMessages(contacts, splitBody, uploadResults, trimmedMentions, isViewOnce, clippedVideosForStories + lowResImagesForStories)
|
||||
sendMessages(contacts, splitBody, uploadResults, trimmedMentions, isViewOnce, clippedVideosForStories)
|
||||
uploadRepository.deleteAbandonedAttachments()
|
||||
emitter.onComplete()
|
||||
} else if (uploadResults.isNotEmpty()) {
|
||||
@@ -338,7 +333,7 @@ class MediaSelectionRepository(context: Context) {
|
||||
}
|
||||
|
||||
if (nonStoryMessages.isNotEmpty()) {
|
||||
Log.d(TAG, "Sending ${nonStoryMessages.size} non-story preupload messages")
|
||||
Log.d(TAG, "Sending ${nonStoryMessages.size} preupload messages to chats")
|
||||
MessageSender.sendMediaBroadcast(
|
||||
context,
|
||||
nonStoryMessages,
|
||||
@@ -355,7 +350,7 @@ class MediaSelectionRepository(context: Context) {
|
||||
}
|
||||
|
||||
if (storyClipMessages.isNotEmpty()) {
|
||||
Log.d(TAG, "Sending ${storyClipMessages.size} clip messages to stories")
|
||||
Log.d(TAG, "Sending ${storyClipMessages.size} video clip messages to stories")
|
||||
MessageSender.sendStories(context, storyClipMessages, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user