kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix issue where stories with links would fail to send.
rodzic
19d3bbc70a
commit
7f4a12c179
|
@ -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>(TextStoryPostSendResult.Success)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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<OutgoingSecureMediaMessage> 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<String> preUploadJobIds,
|
||||
@NonNull List<String> 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).
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue