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
|
package org.thoughtcrime.securesms.mediasend.v2.text.send
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import io.reactivex.rxjava3.core.Completable
|
||||||
import io.reactivex.rxjava3.core.Single
|
import io.reactivex.rxjava3.core.Single
|
||||||
import org.signal.core.util.ThreadUtil
|
import org.signal.core.util.ThreadUtil
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
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.OutgoingMediaMessage
|
||||||
import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage
|
import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.sms.MessageSender
|
import org.thoughtcrime.securesms.stories.Stories
|
||||||
import org.thoughtcrime.securesms.util.Base64
|
import org.thoughtcrime.securesms.util.Base64
|
||||||
|
|
||||||
class TextStoryPostSendRepository(context: Context) {
|
class TextStoryPostSendRepository(context: Context) {
|
||||||
|
@ -93,8 +94,9 @@ class TextStoryPostSendRepository(context: Context) {
|
||||||
ThreadUtil.sleep(5)
|
ThreadUtil.sleep(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageSender.sendMediaBroadcast(context, messages, emptyList())
|
messages.map { Stories.sendIndividualStory(it) }
|
||||||
TextStoryPostSendResult.Success
|
}.flatMap { messages ->
|
||||||
|
Completable.concat(messages).toSingleDefault<TextStoryPostSendResult>(TextStoryPostSendResult.Success)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -231,7 +231,6 @@ public class MessageSender {
|
||||||
|
|
||||||
attachmentDatabase.updateMessageId(preUploadAttachmentIds, primaryMessageId);
|
attachmentDatabase.updateMessageId(preUploadAttachmentIds, primaryMessageId);
|
||||||
messageIds.add(primaryMessageId);
|
messageIds.add(primaryMessageId);
|
||||||
uploadLinkPreviews(primaryMessage, primaryMessageId, jobManager, preUploadJobIds, messageDependsOnIds);
|
|
||||||
|
|
||||||
if (messages.size() > 0) {
|
if (messages.size() > 0) {
|
||||||
List<OutgoingSecureMediaMessage> secondaryMessages = messages.subList(1, messages.size());
|
List<OutgoingSecureMediaMessage> secondaryMessages = messages.subList(1, messages.size());
|
||||||
|
@ -260,7 +259,6 @@ public class MessageSender {
|
||||||
|
|
||||||
attachmentDatabase.updateMessageId(attachmentIds, messageId);
|
attachmentDatabase.updateMessageId(attachmentIds, messageId);
|
||||||
messageIds.add(messageId);
|
messageIds.add(messageId);
|
||||||
uploadLinkPreviews(secondaryMessage, messageId, jobManager, preUploadJobIds, messageDependsOnIds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < attachmentCopies.size(); i++) {
|
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
|
* @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).
|
* be enqueued (like in the case of a local self-send).
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
package org.thoughtcrime.securesms.stories
|
package org.thoughtcrime.securesms.stories
|
||||||
|
|
||||||
|
import androidx.annotation.WorkerThread
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import io.reactivex.rxjava3.core.Completable
|
||||||
import org.thoughtcrime.securesms.R
|
import org.thoughtcrime.securesms.R
|
||||||
import org.thoughtcrime.securesms.contacts.HeaderAction
|
import org.thoughtcrime.securesms.contacts.HeaderAction
|
||||||
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.mediasend.v2.stories.ChooseStoryTypeBottomSheet
|
import org.thoughtcrime.securesms.mediasend.v2.stories.ChooseStoryTypeBottomSheet
|
||||||
|
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
import org.thoughtcrime.securesms.sms.MessageSender
|
||||||
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
import org.thoughtcrime.securesms.util.FeatureFlags
|
||||||
|
|
||||||
|
@ -28,4 +33,19 @@ object Stories {
|
||||||
ChooseStoryTypeBottomSheet().show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
|
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