Update libsignal-client to 0.14.0

This commit is contained in:
Greyson Parrelli
2022-03-14 15:49:46 -04:00
committed by Cody Henthorne
parent 749bbf428d
commit 057231b9c3
650 changed files with 2154 additions and 2384 deletions

View File

@@ -27,7 +27,6 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.libsignal.InvalidKeyException;
import org.whispersystems.libsignal.InvalidRegistrationIdException;
import org.whispersystems.libsignal.NoSessionException;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.CancelationException;
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
import org.whispersystems.signalservice.api.SignalServiceMessageSender.LegacyGroupEvents;
@@ -57,6 +56,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
@@ -221,7 +221,7 @@ public final class GroupSendUtil {
List<Recipient> registeredTargets = allTargets.stream().filter(r -> !unregisteredTargets.contains(r)).collect(Collectors.toList());
RecipientData recipients = new RecipientData(context, registeredTargets);
Optional<GroupRecord> groupRecord = groupId != null ? SignalDatabase.groups().getGroup(groupId) : Optional.absent();
Optional<GroupRecord> groupRecord = groupId != null ? SignalDatabase.groups().getGroup(groupId) : Optional.empty();
List<Recipient> senderKeyTargets = new LinkedList<>();
List<Recipient> legacyTargets = new LinkedList<>();
@@ -370,7 +370,7 @@ public final class GroupSendUtil {
List<SendMessageResult> unregisteredResults = unregisteredTargets.stream()
.filter(Recipient::hasServiceId)
.map(t -> SendMessageResult.unregisteredFailure(new SignalServiceAddress(t.requireServiceId(), t.getE164().orNull())))
.map(t -> SendMessageResult.unregisteredFailure(new SignalServiceAddress(t.requireServiceId(), t.getE164().orElse(null))))
.collect(Collectors.toList());
if (unregisteredResults.size() < unregisteredTargets.size()) {
@@ -393,7 +393,7 @@ public final class GroupSendUtil {
private static @Nullable DistributionId getDistributionId(@Nullable DistributionListId distributionListId) {
if (distributionListId != null) {
return Optional.fromNullable(SignalDatabase.distributionLists().getDistributionId(distributionListId)).orNull();
return Optional.ofNullable(SignalDatabase.distributionLists().getDistributionId(distributionListId)).orElse(null);
} else {
return null;
}
@@ -514,7 +514,7 @@ public final class GroupSendUtil {
throws NoSessionException, UntrustedIdentityException, InvalidKeyException, IOException, InvalidRegistrationIdException
{
messageSender.sendGroupTyping(distributionId, targets, access, message);
return targets.stream().map(a -> SendMessageResult.success(a, Collections.emptyList(), true, false, -1, Optional.absent())).collect(Collectors.toList());
return targets.stream().map(a -> SendMessageResult.success(a, Collections.emptyList(), true, false, -1, Optional.empty())).collect(Collectors.toList());
}
@Override
@@ -527,7 +527,7 @@ public final class GroupSendUtil {
throws IOException
{
messageSender.sendTyping(targets, access, message, cancelationSignal);
return targets.stream().map(a -> SendMessageResult.success(a, Collections.emptyList(), true, false, -1, Optional.absent())).collect(Collectors.toList());
return targets.stream().map(a -> SendMessageResult.success(a, Collections.emptyList(), true, false, -1, Optional.empty())).collect(Collectors.toList());
}
@Override
@@ -625,7 +625,7 @@ public final class GroupSendUtil {
boolean isRecipientUpdate)
throws NoSessionException, UntrustedIdentityException, InvalidKeyException, IOException, InvalidRegistrationIdException
{
return messageSender.sendGroupStory(distributionId, Optional.fromNullable(groupId).transform(GroupId::getDecodedId), targets, access, message, getSentTimestamp());
return messageSender.sendGroupStory(distributionId, Optional.ofNullable(groupId).map(GroupId::getDecodedId), targets, access, message, getSentTimestamp());
}
@Override

View File

@@ -24,13 +24,13 @@ import org.thoughtcrime.securesms.messages.IncomingMessageProcessor.Processor;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.util.AppForegroundObserver;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalWebSocket;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
import org.whispersystems.signalservice.api.websocket.WebSocketUnavailableException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

View File

@@ -8,7 +8,6 @@ import androidx.annotation.Nullable;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.crypto.ReentrantSessionLock;
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId;
import org.thoughtcrime.securesms.database.MmsSmsDatabase;

View File

@@ -54,7 +54,6 @@ import org.thoughtcrime.securesms.database.model.StoryType;
import org.thoughtcrime.securesms.database.model.ThreadRecord;
import org.thoughtcrime.securesms.database.model.databaseprotos.ChatColor;
import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost;
import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPostOrBuilder;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.BadGroupIdException;
import org.thoughtcrime.securesms.groups.GroupChangeBusyException;
@@ -132,7 +131,6 @@ import org.whispersystems.libsignal.SignalProtocolAddress;
import org.whispersystems.libsignal.ecc.ECPublicKey;
import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
import org.whispersystems.libsignal.state.SessionRecord;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
@@ -184,6 +182,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -211,7 +210,7 @@ public final class MessageContentProcessor {
public void process(MessageState messageState, @Nullable SignalServiceContent content, @Nullable ExceptionMetadata exceptionMetadata, long timestamp, long smsMessageId)
throws IOException, GroupChangeBusyException
{
Optional<Long> optionalSmsMessageId = smsMessageId > 0 ? Optional.of(smsMessageId) : Optional.absent();
Optional<Long> optionalSmsMessageId = smsMessageId > 0 ? Optional.of(smsMessageId) : Optional.empty();
if (messageState == MessageState.DECRYPTED_OK) {
@@ -226,7 +225,7 @@ public final class MessageContentProcessor {
log(String.valueOf(content.getTimestamp()), "Found " + earlyContent.get().size() + " dependent item(s) that were retrieved earlier. Processing.");
for (SignalServiceContent earlyItem : earlyContent.get()) {
handleMessage(earlyItem, timestamp, senderRecipient, Optional.absent());
handleMessage(earlyItem, timestamp, senderRecipient, Optional.empty());
}
}
} else {
@@ -265,7 +264,7 @@ public final class MessageContentProcessor {
boolean isGv2Message = groupId.isPresent() && groupId.get().isV2();
if (isGv2Message) {
if (handleGv2PreProcessing(groupId.orNull().requireV2(), content, content.getDataMessage().get().getGroupContext().get().getGroupV2().get(), senderRecipient)) {
if (handleGv2PreProcessing(groupId.orElse(null).requireV2(), content, content.getDataMessage().get().getGroupContext().get().getGroupV2().get(), senderRecipient)) {
return;
}
}
@@ -553,7 +552,7 @@ public final class MessageContentProcessor {
case UNSUPPORTED_DATA_MESSAGE:
warn(String.valueOf(timestamp), "Handling unsupported data message.");
handleUnsupportedDataMessage(e.sender, e.senderDevice, Optional.fromNullable(e.groupId), timestamp, smsMessageId);
handleUnsupportedDataMessage(e.sender, e.senderDevice, Optional.ofNullable(e.groupId), timestamp, smsMessageId);
break;
case CORRUPT_MESSAGE:
@@ -579,7 +578,7 @@ public final class MessageContentProcessor {
database.markAsMissedCall(smsMessageId.get(), message.getType() == OfferMessage.Type.VIDEO_CALL);
} else {
RemotePeer remotePeer = new RemotePeer(senderRecipient.getId(), new CallId(message.getId()));
byte[] remoteIdentityKey = ApplicationDependencies.getProtocolStore().aci().identities().getIdentityRecord(senderRecipient.getId()).transform(record -> record.getIdentityKey().serialize()).orNull();
byte[] remoteIdentityKey = ApplicationDependencies.getProtocolStore().aci().identities().getIdentityRecord(senderRecipient.getId()).map(record -> record.getIdentityKey().serialize()).orElse(null);
ApplicationDependencies.getSignalCallManager()
.receivedOffer(new WebRtcData.CallMetadata(remotePeer, content.getSenderDevice()),
@@ -597,7 +596,7 @@ public final class MessageContentProcessor {
{
log(String.valueOf(content), "handleCallAnswerMessage...");
RemotePeer remotePeer = new RemotePeer(senderRecipient.getId(), new CallId(message.getId()));
byte[] remoteIdentityKey = ApplicationDependencies.getProtocolStore().aci().identities().getIdentityRecord(senderRecipient.getId()).transform(record -> record.getIdentityKey().serialize()).orNull();
byte[] remoteIdentityKey = ApplicationDependencies.getProtocolStore().aci().identities().getIdentityRecord(senderRecipient.getId()).map(record -> record.getIdentityKey().serialize()).orElse(null);
ApplicationDependencies.getSignalCallManager()
.receivedAnswer(new WebRtcData.CallMetadata(remotePeer, content.getSenderDevice()),
@@ -708,7 +707,7 @@ public final class MessageContentProcessor {
content.getServerReceivedTimestamp(),
System.currentTimeMillis(),
"",
Optional.absent(),
Optional.empty(),
0,
content.isNeedsReceipt(),
content.getServerUuid());
@@ -779,7 +778,7 @@ public final class MessageContentProcessor {
GroupV1MessageProcessor.process(context, content, message, false);
if (message.getExpiresInSeconds() != 0 && message.getExpiresInSeconds() != threadRecipient.getExpiresInSeconds()) {
handleExpirationUpdate(content, message, Optional.absent(), Optional.of(groupId), senderRecipient, threadRecipient, receivedTime);
handleExpirationUpdate(content, message, Optional.empty(), Optional.of(groupId), senderRecipient, threadRecipient, receivedTime);
}
if (smsMessageId.isPresent()) {
@@ -846,14 +845,14 @@ public final class MessageContentProcessor {
true,
false,
content.isNeedsReceipt(),
Optional.absent(),
Optional.empty(),
groupContext,
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
content.getServerUuid());
Optional<InsertResult> insertResult = database.insertSecureDecryptedMessageInbox(mediaMessage, -1);
@@ -1073,14 +1072,14 @@ public final class MessageContentProcessor {
private void handleSynchronizeOutgoingPayment(@NonNull SignalServiceContent content, @NonNull OutgoingPaymentMessage outgoingPaymentMessage) {
RecipientId recipientId = outgoingPaymentMessage.getRecipient()
.transform(RecipientId::from)
.orNull();
.map(RecipientId::from)
.orElse(null);
long timestamp = outgoingPaymentMessage.getBlockTimestamp();
if (timestamp == 0) {
timestamp = System.currentTimeMillis();
}
Optional<MobileCoinPublicAddress> address = outgoingPaymentMessage.getAddress().transform(MobileCoinPublicAddress::fromBytes);
Optional<MobileCoinPublicAddress> address = outgoingPaymentMessage.getAddress().map(MobileCoinPublicAddress::fromBytes);
if (!address.isPresent() && recipientId == null) {
log(content.getTimestamp(), "Inserting defrag");
address = Optional.of(ApplicationDependencies.getPayments().getWallet().getMobileCoinPublicAddress());
@@ -1095,7 +1094,7 @@ public final class MessageContentProcessor {
address.get(),
timestamp,
outgoingPaymentMessage.getBlockIndex(),
outgoingPaymentMessage.getNote().or(""),
outgoingPaymentMessage.getNote().orElse(""),
outgoingPaymentMessage.getAmount(),
outgoingPaymentMessage.getFee(),
outgoingPaymentMessage.getReceipt().toByteArray(),
@@ -1339,7 +1338,7 @@ public final class MessageContentProcessor {
try {
final StoryType storyType;
if (message.getAllowsReplies().or(false)) {
if (message.getAllowsReplies().orElse(false)) {
storyType = StoryType.withReplies(message.getTextAttachment().isPresent());
} else {
storyType = StoryType.withoutReplies(message.getTextAttachment().isPresent());
@@ -1356,17 +1355,16 @@ public final class MessageContentProcessor {
false,
false,
content.isNeedsReceipt(),
message.getTextAttachment().transform(this::serializeTextAttachment),
Optional.fromNullable(GroupUtil.getGroupContextIfPresent(content)),
message.getFileAttachment().transform(Collections::singletonList),
Optional.absent(),
Optional.absent(),
getLinkPreviews(OptionalUtil.flatMap(message.getTextAttachment(),
t -> t.getPreview().transform(Collections::singletonList)),
message.getTextAttachment().map(this::serializeTextAttachment),
Optional.ofNullable(GroupUtil.getGroupContextIfPresent(content)),
message.getFileAttachment().map(Collections::singletonList),
Optional.empty(),
Optional.empty(),
getLinkPreviews(message.getTextAttachment().flatMap(t -> t.getPreview().map(Collections::singletonList)),
"",
true),
Optional.absent(),
Optional.absent(),
Optional.empty(),
Optional.empty(),
content.getServerUuid());
insertResult = database.insertSecureDecryptedMessageInbox(mediaMessage, -1);
@@ -1437,7 +1435,7 @@ public final class MessageContentProcessor {
SignalServiceTextAttachment.Gradient gradient = textAttachment.getBackgroundGradient().get();
ChatColor.LinearGradient.Builder linearGradientBuilder = ChatColor.LinearGradient.newBuilder();
linearGradientBuilder.setRotation(gradient.getAngle().or(0).floatValue());
linearGradientBuilder.setRotation(gradient.getAngle().orElse(0).floatValue());
linearGradientBuilder.addColors(gradient.getStartColor().get());
linearGradientBuilder.addColors(gradient.getEndColor().get());
linearGradientBuilder.addAllPositions(Arrays.asList(0f, 1f));
@@ -1500,13 +1498,13 @@ public final class MessageContentProcessor {
false,
content.isNeedsReceipt(),
message.getBody(),
Optional.fromNullable(GroupUtil.getGroupContextIfPresent(content)),
Optional.absent(),
Optional.fromNullable(quoteModel),
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.absent(),
Optional.ofNullable(GroupUtil.getGroupContextIfPresent(content)),
Optional.empty(),
Optional.ofNullable(quoteModel),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
content.getServerUuid());
Optional<InsertResult> insertResult = database.insertSecureDecryptedMessageInbox(mediaMessage, -1);
@@ -1541,7 +1539,7 @@ public final class MessageContentProcessor {
try {
Optional<QuoteModel> quote = getValidatedQuote(message.getQuote());
Optional<List<Contact>> sharedContacts = getContacts(message.getSharedContacts());
Optional<List<LinkPreview>> linkPreviews = getLinkPreviews(message.getPreviews(), message.getBody().or(""), false);
Optional<List<LinkPreview>> linkPreviews = getLinkPreviews(message.getPreviews(), message.getBody().orElse(""), false);
Optional<List<Mention>> mentions = getMentions(message.getMentions());
Optional<Attachment> sticker = getStickerAttachment(message.getSticker());
@@ -1637,7 +1635,7 @@ public final class MessageContentProcessor {
Optional<QuoteModel> quote = getValidatedQuote(message.getMessage().getQuote());
Optional<Attachment> sticker = getStickerAttachment(message.getMessage().getSticker());
Optional<List<Contact>> sharedContacts = getContacts(message.getMessage().getSharedContacts());
Optional<List<LinkPreview>> previews = getLinkPreviews(message.getMessage().getPreviews(), message.getMessage().getBody().or(""), false);
Optional<List<LinkPreview>> previews = getLinkPreviews(message.getMessage().getPreviews(), message.getMessage().getBody().orElse(""), false);
Optional<List<Mention>> mentions = getMentions(message.getMessage().getMentions());
boolean viewOnce = message.getMessage().isViewOnce();
List<Attachment> syncAttachments = viewOnce ? Collections.singletonList(new TombstoneAttachment(MediaUtil.VIEW_ONCE, false))
@@ -1648,7 +1646,7 @@ public final class MessageContentProcessor {
}
OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipients,
message.getMessage().getBody().orNull(),
message.getMessage().getBody().orElse(null),
syncAttachments,
message.getTimestamp(),
-1,
@@ -1657,10 +1655,10 @@ public final class MessageContentProcessor {
ThreadDatabase.DistributionTypes.DEFAULT,
StoryType.NONE,
null,
quote.orNull(),
sharedContacts.or(Collections.emptyList()),
previews.or(Collections.emptyList()),
mentions.or(Collections.emptyList()),
quote.orElse(null),
sharedContacts.orElse(Collections.emptyList()),
previews.orElse(Collections.emptyList()),
mentions.orElse(Collections.emptyList()),
Collections.emptySet(),
Collections.emptySet());
@@ -1786,7 +1784,7 @@ public final class MessageContentProcessor {
String body = message.getBody().isPresent() ? message.getBody().get() : "";
if (message.getExpiresInSeconds() != threadRecipient.getExpiresInSeconds()) {
handleExpirationUpdate(content, message, Optional.absent(), groupId, senderRecipient, threadRecipient, receivedTime);
handleExpirationUpdate(content, message, Optional.empty(), groupId, senderRecipient, threadRecipient, receivedTime);
}
Optional<InsertResult> insertResult;
@@ -1827,7 +1825,7 @@ public final class MessageContentProcessor {
log(envelopeTimestamp, "Synchronize sent text message for " + message.getTimestamp());
Recipient recipient = getSyncMessageDestination(message);
String body = message.getMessage().getBody().or("");
String body = message.getMessage().getBody().orElse("");
long expiresInMillis = TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds());
if (recipient.getExpiresInSeconds() != message.getMessage().getExpiresInSeconds()) {
@@ -2260,7 +2258,7 @@ public final class MessageContentProcessor {
private static boolean isInvalidMessage(@NonNull SignalServiceDataMessage message) {
if (message.isViewOnce()) {
List<SignalServiceAttachment> attachments = message.getAttachments().or(Collections.emptyList());
List<SignalServiceAttachment> attachments = message.getAttachments().orElse(Collections.emptyList());
return attachments.size() != 1 ||
!isViewOnceSupportedContentType(attachments.get(0).getContentType().toLowerCase());
@@ -2274,16 +2272,16 @@ public final class MessageContentProcessor {
}
private Optional<QuoteModel> getValidatedQuote(Optional<SignalServiceDataMessage.Quote> quote) {
if (!quote.isPresent()) return Optional.absent();
if (!quote.isPresent()) return Optional.empty();
if (quote.get().getId() <= 0) {
warn("Received quote without an ID! Ignoring...");
return Optional.absent();
return Optional.empty();
}
if (quote.get().getAuthor() == null) {
warn("Received quote without an author! Ignoring...");
return Optional.absent();
return Optional.empty();
}
RecipientId author = Recipient.externalPush(quote.get().getAuthor()).getId();
@@ -2331,12 +2329,12 @@ public final class MessageContentProcessor {
private Optional<Attachment> getStickerAttachment(Optional<SignalServiceDataMessage.Sticker> sticker) {
if (!sticker.isPresent()) {
return Optional.absent();
return Optional.empty();
}
if (sticker.get().getPackId() == null || sticker.get().getPackKey() == null || sticker.get().getAttachment() == null) {
warn("Malformed sticker!");
return Optional.absent();
return Optional.empty();
}
String packId = Hex.toStringCondensed(sticker.get().getPackId());
@@ -2371,7 +2369,7 @@ public final class MessageContentProcessor {
}
private static Optional<List<Contact>> getContacts(Optional<List<SharedContact>> sharedContacts) {
if (!sharedContacts.isPresent()) return Optional.absent();
if (!sharedContacts.isPresent()) return Optional.empty();
List<Contact> contacts = new ArrayList<>(sharedContacts.get().size());
@@ -2383,22 +2381,22 @@ public final class MessageContentProcessor {
}
private Optional<List<LinkPreview>> getLinkPreviews(Optional<List<SignalServicePreview>> previews, @NonNull String message, boolean isStoryEmbed) {
if (!previews.isPresent() || previews.get().isEmpty()) return Optional.absent();
if (!previews.isPresent() || previews.get().isEmpty()) return Optional.empty();
List<LinkPreview> linkPreviews = new ArrayList<>(previews.get().size());
LinkPreviewUtil.Links urlsInMessage = LinkPreviewUtil.findValidPreviewUrls(message);
for (SignalServicePreview preview : previews.get()) {
Optional<Attachment> thumbnail = PointerAttachment.forPointer(preview.getImage());
Optional<String> url = Optional.fromNullable(preview.getUrl());
Optional<String> title = Optional.fromNullable(preview.getTitle());
Optional<String> description = Optional.fromNullable(preview.getDescription());
boolean hasTitle = !TextUtils.isEmpty(title.or(""));
Optional<String> url = Optional.ofNullable(preview.getUrl());
Optional<String> title = Optional.ofNullable(preview.getTitle());
Optional<String> description = Optional.ofNullable(preview.getDescription());
boolean hasTitle = !TextUtils.isEmpty(title.orElse(""));
boolean presentInBody = url.isPresent() && urlsInMessage.containsUrl(url.get());
boolean validDomain = url.isPresent() && LinkPreviewUtil.isValidPreviewUrl(url.get());
if (hasTitle && (presentInBody || isStoryEmbed) && validDomain) {
LinkPreview linkPreview = new LinkPreview(url.get(), title.or(""), description.or(""), preview.getDate(), thumbnail);
LinkPreview linkPreview = new LinkPreview(url.get(), title.orElse(""), description.orElse(""), preview.getDate(), thumbnail);
linkPreviews.add(linkPreview);
} else {
warn(String.format("Discarding an invalid link preview. hasTitle: %b presentInBody: %b validDomain: %b", hasTitle, presentInBody, validDomain));
@@ -2409,7 +2407,7 @@ public final class MessageContentProcessor {
}
private Optional<List<Mention>> getMentions(Optional<List<SignalServiceDataMessage.Mention>> signalServiceMentions) {
if (!signalServiceMentions.isPresent()) return Optional.absent();
if (!signalServiceMentions.isPresent()) return Optional.empty();
return Optional.of(getMentions(signalServiceMentions.get()));
}
@@ -2429,7 +2427,7 @@ public final class MessageContentProcessor {
}
private Optional<InsertResult> insertPlaceholder(@NonNull String sender, int senderDevice, long timestamp) {
return insertPlaceholder(sender, senderDevice, timestamp, Optional.absent());
return insertPlaceholder(sender, senderDevice, timestamp, Optional.empty());
}
private Optional<InsertResult> insertPlaceholder(@NonNull String sender, int senderDevice, long timestamp, Optional<GroupId> groupId) {
@@ -2445,12 +2443,12 @@ public final class MessageContentProcessor {
private Recipient getSyncMessageDestination(@NonNull SentTranscriptMessage message)
throws BadGroupIdException
{
return getGroupRecipient(message.getMessage().getGroupContext()).or(() -> Recipient.externalPush(message.getDestination().get()));
return getGroupRecipient(message.getMessage().getGroupContext()).orElseGet(() -> Recipient.externalPush(message.getDestination().get()));
}
private Recipient getMessageDestination(@NonNull SignalServiceContent content) throws BadGroupIdException {
SignalServiceDataMessage message = content.getDataMessage().orNull();
return getGroupRecipient(message != null ? message.getGroupContext() : Optional.absent()).or(() -> Recipient.externalHighTrustPush(context, content.getSender()));
SignalServiceDataMessage message = content.getDataMessage().orElse(null);
return getGroupRecipient(message != null ? message.getGroupContext() : Optional.empty()).orElseGet(() -> Recipient.externalHighTrustPush(context, content.getSender()));
}
private Optional<Recipient> getGroupRecipient(Optional<SignalServiceGroupContext> message)
@@ -2459,7 +2457,7 @@ public final class MessageContentProcessor {
if (message.isPresent()) {
return Optional.of(Recipient.externalPossiblyMigratedGroup(context, GroupUtil.idFromGroupContext(message.get())));
}
return Optional.absent();
return Optional.empty();
}
private void notifyTypingStoppedFromIncomingMessage(@NonNull Recipient senderRecipient, @NonNull Recipient conversationRecipient, int device) {

View File

@@ -44,7 +44,6 @@ import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.whispersystems.libsignal.protocol.CiphertextMessage;
import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.InvalidMessageStructureException;
import org.whispersystems.signalservice.api.SignalServiceAccountDataStore;
import org.whispersystems.signalservice.api.crypto.ContentHint;
@@ -57,6 +56,7 @@ import org.whispersystems.signalservice.internal.push.UnsupportedDataMessageExce
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
/**
* Handles taking an encrypted {@link SignalServiceEnvelope} and turning it into a plaintext model.
@@ -130,7 +130,7 @@ public final class MessageDecryptionUtil {
ContentHint contentHint = ContentHint.fromType(protocolException.getContentHint());
int senderDevice = protocolException.getSenderDevice();
long receivedTimestamp = System.currentTimeMillis();
Optional<GroupId> groupId = Optional.absent();
Optional<GroupId> groupId = Optional.empty();
if (protocolException.getGroupId().isPresent()) {
try {

View File

@@ -10,9 +10,9 @@ import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.JobTracker;
import org.thoughtcrime.securesms.jobs.MarkerJob;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
/**

View File

@@ -10,11 +10,11 @@ import org.thoughtcrime.securesms.jobmanager.JobTracker;
import org.thoughtcrime.securesms.jobs.MarkerJob;
import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob;
import org.thoughtcrime.securesms.jobs.PushProcessMessageJob;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
import java.io.IOException;
import java.util.Iterator;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

View File

@@ -4,9 +4,9 @@ import com.google.protobuf.InvalidProtocolBufferException
import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.util.Base64
import org.whispersystems.libsignal.util.guava.Optional
import org.whispersystems.signalservice.api.messages.SignalServicePreview
import org.whispersystems.signalservice.api.messages.SignalServiceTextAttachment
import java.util.Optional
import kotlin.math.roundToInt
object StorySendUtil {
@@ -15,15 +15,15 @@ object StorySendUtil {
fun deserializeBodyToStoryTextAttachment(message: OutgoingMediaMessage, getPreviewsFor: (OutgoingMediaMessage) -> List<SignalServicePreview>): SignalServiceTextAttachment {
val storyTextPost = StoryTextPost.parseFrom(Base64.decode(message.body))
val preview = if (message.linkPreviews.isEmpty()) {
Optional.absent()
Optional.empty()
} else {
Optional.of(getPreviewsFor(message)[0])
}
return if (storyTextPost.background.hasLinearGradient()) {
SignalServiceTextAttachment.forGradientBackground(
Optional.fromNullable(storyTextPost.body),
Optional.fromNullable(getStyle(storyTextPost.style)),
Optional.ofNullable(storyTextPost.body),
Optional.ofNullable(getStyle(storyTextPost.style)),
Optional.of(storyTextPost.textForegroundColor),
Optional.of(storyTextPost.textBackgroundColor),
preview,
@@ -35,8 +35,8 @@ object StorySendUtil {
)
} else {
SignalServiceTextAttachment.forSolidBackground(
Optional.fromNullable(storyTextPost.body),
Optional.fromNullable(getStyle(storyTextPost.style)),
Optional.ofNullable(storyTextPost.body),
Optional.ofNullable(getStyle(storyTextPost.style)),
Optional.of(storyTextPost.textForegroundColor),
Optional.of(storyTextPost.textBackgroundColor),
preview,

View File

@@ -6,12 +6,12 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.PushProcessMessageJob;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalWebSocket;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
import java.io.IOException;
import java.util.Iterator;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeoutException;