diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt index 777f776b9..e92ad6e00 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.mediasend.v2.text.send import android.content.Context +import io.reactivex.rxjava3.core.Completable import io.reactivex.rxjava3.core.Single import org.signal.core.util.ThreadUtil import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey @@ -17,7 +18,7 @@ import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryPostCreationState import org.thoughtcrime.securesms.mms.OutgoingMediaMessage import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage import org.thoughtcrime.securesms.recipients.Recipient -import org.thoughtcrime.securesms.sms.MessageSender +import org.thoughtcrime.securesms.stories.Stories import org.thoughtcrime.securesms.util.Base64 class TextStoryPostSendRepository(context: Context) { @@ -93,8 +94,9 @@ class TextStoryPostSendRepository(context: Context) { ThreadUtil.sleep(5) } - MessageSender.sendMediaBroadcast(context, messages, emptyList()) - TextStoryPostSendResult.Success + messages.map { Stories.sendIndividualStory(it) } + }.flatMap { messages -> + Completable.concat(messages).toSingleDefault(TextStoryPostSendResult.Success) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java index c29e90eb6..8658c7e5c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java @@ -231,7 +231,6 @@ public class MessageSender { attachmentDatabase.updateMessageId(preUploadAttachmentIds, primaryMessageId); messageIds.add(primaryMessageId); - uploadLinkPreviews(primaryMessage, primaryMessageId, jobManager, preUploadJobIds, messageDependsOnIds); if (messages.size() > 0) { List secondaryMessages = messages.subList(1, messages.size()); @@ -260,7 +259,6 @@ public class MessageSender { attachmentDatabase.updateMessageId(attachmentIds, messageId); messageIds.add(messageId); - uploadLinkPreviews(secondaryMessage, messageId, jobManager, preUploadJobIds, messageDependsOnIds); } for (int i = 0; i < attachmentCopies.size(); i++) { @@ -295,31 +293,6 @@ public class MessageSender { } } - @WorkerThread - private static void uploadLinkPreviews(@NonNull OutgoingMediaMessage mediaMessage, - long outgoingMessageId, - @NonNull JobManager jobManager, - @NonNull List preUploadJobIds, - @NonNull List messageDependsOnIds) - { - if (!mediaMessage.getLinkPreviews().isEmpty()) { - try { - MmsMessageRecord freshRecord = (MmsMessageRecord) SignalDatabase.mms().getMessageRecord(outgoingMessageId); - freshRecord.getLinkPreviews() - .stream() - .map(LinkPreview::getAttachmentId) - .filter(Objects::nonNull) - .forEach(previewId -> { - Job job = new AttachmentUploadJob(previewId); - jobManager.add(job, preUploadJobIds); - messageDependsOnIds.add(job.getId()); - }); - } catch (NoSuchMessageException e) { - throw new AssertionError("Cannot fetch record we just inserted"); - } - } - } - /** * @return A result if the attachment was enqueued, or null if it failed to enqueue or shouldn't * be enqueued (like in the case of a local self-send). diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt index ce85ecd81..042570ea5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt @@ -1,11 +1,16 @@ package org.thoughtcrime.securesms.stories +import androidx.annotation.WorkerThread import androidx.fragment.app.FragmentManager +import io.reactivex.rxjava3.core.Completable import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.HeaderAction +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.mediasend.v2.stories.ChooseStoryTypeBottomSheet +import org.thoughtcrime.securesms.mms.OutgoingMediaMessage import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.sms.MessageSender import org.thoughtcrime.securesms.util.BottomSheetUtil import org.thoughtcrime.securesms.util.FeatureFlags @@ -28,4 +33,19 @@ object Stories { ChooseStoryTypeBottomSheet().show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG) } } + + @WorkerThread + fun sendIndividualStory(message: OutgoingMediaMessage): Completable { + return Completable.create { emitter -> + MessageSender.send( + ApplicationDependencies.getApplication(), + message, + -1L, + false, + null + ) { + emitter.onComplete() + } + } + } }