Respect proper media upload requirements for stories.

This commit is contained in:
Alex Hart
2022-08-01 11:00:57 -03:00
committed by Greyson Parrelli
parent 92201dcd90
commit ba7319e215
4 changed files with 13 additions and 26 deletions

View File

@@ -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)
}
}