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

@@ -9,12 +9,12 @@ import android.content.pm.Signature;
import androidx.annotation.NonNull;
import org.signal.core.util.logging.Log;
import org.whispersystems.libsignal.util.guava.Optional;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Optional;
public final class AppSignatureUtil {
@@ -39,13 +39,13 @@ public final class AppSignatureUtil {
if (signatures.length > 0) {
String hash = hash(packageName, signatures[0].toCharsString());
return Optional.fromNullable(hash);
return Optional.ofNullable(hash);
}
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, e);
}
return Optional.absent();
return Optional.empty();
}
private static String hash(String packageName, String signature) {

View File

@@ -25,8 +25,8 @@ import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.GlideRequest;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
public final class AvatarUtil {
@@ -167,7 +167,7 @@ public final class AvatarUtil {
}
private static Drawable getFallback(@NonNull Context context, @NonNull Recipient recipient, int targetSize) {
String name = Optional.fromNullable(recipient.getDisplayName(context)).or("");
String name = Optional.ofNullable(recipient.getDisplayName(context)).orElse("");
return new GeneratedContactPhoto(name, R.drawable.ic_profile_outline_40, targetSize).asDrawable(context, recipient.getAvatarColor());
}

View File

@@ -1,6 +1,8 @@
package org.thoughtcrime.securesms.util;
import org.whispersystems.libsignal.util.guava.Preconditions;
import org.whispersystems.signalservice.api.util.Preconditions;
import java.util.Locale;

View File

@@ -13,7 +13,7 @@ import androidx.annotation.NonNull;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import org.whispersystems.libsignal.util.guava.Preconditions;
import org.whispersystems.signalservice.api.util.Preconditions;
import java.security.MessageDigest;
import java.util.Locale;

View File

@@ -197,7 +197,7 @@ public class CommunicationActions {
GroupId.V2 groupId = GroupId.v2(groupInviteLinkUrl.getGroupMasterKey());
SimpleTask.run(SignalExecutors.BOUNDED, () -> {
GroupDatabase.GroupRecord group = SignalDatabase.groups().getGroup(groupId).orNull();
GroupDatabase.GroupRecord group = SignalDatabase.groups().getGroup(groupId).orElse(null);
return group != null && group.isActive() ? Recipient.resolved(group.getRecipientId())
: null;

View File

@@ -4,7 +4,8 @@ import android.database.Cursor;
import androidx.annotation.NonNull;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
public final class CursorUtil {
@@ -48,15 +49,15 @@ public final class CursorUtil {
public static Optional<String> getString(@NonNull Cursor cursor, @NonNull String column) {
if (cursor.getColumnIndex(column) < 0) {
return Optional.absent();
return Optional.empty();
} else {
return Optional.fromNullable(requireString(cursor, column));
return Optional.ofNullable(requireString(cursor, column));
}
}
public static Optional<Integer> getInt(@NonNull Cursor cursor, @NonNull String column) {
if (cursor.getColumnIndex(column) < 0) {
return Optional.absent();
return Optional.empty();
} else {
return Optional.of(requireInt(cursor, column));
}
@@ -64,7 +65,7 @@ public final class CursorUtil {
public static Optional<Boolean> getBoolean(@NonNull Cursor cursor, @NonNull String column) {
if (cursor.getColumnIndex(column) < 0) {
return Optional.absent();
return Optional.empty();
} else {
return Optional.of(requireBoolean(cursor, column));
}
@@ -72,9 +73,9 @@ public final class CursorUtil {
public static Optional<byte[]> getBlob(@NonNull Cursor cursor, @NonNull String column) {
if (cursor.getColumnIndex(column) < 0) {
return Optional.absent();
return Optional.empty();
} else {
return Optional.fromNullable(requireBlob(cursor, column));
return Optional.ofNullable(requireBlob(cursor, column));
}
}

View File

@@ -3,7 +3,8 @@ package org.thoughtcrime.securesms.util;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import org.whispersystems.libsignal.util.guava.Preconditions;
import org.whispersystems.signalservice.api.util.Preconditions;
/**
* Helps prevent all the @Nullable warnings when working with LiveData.

View File

@@ -3,12 +3,12 @@ package org.thoughtcrime.securesms.util;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* Sometimes a message that is referencing another message can arrive out of order. In these cases,
@@ -42,7 +42,7 @@ public final class EarlyMessageCache {
* @param sentTimestamp The sent timestamp of the message in question.
*/
public Optional<List<SignalServiceContent>> retrieve(@NonNull RecipientId sender, long sentTimestamp) {
return Optional.fromNullable(cache.remove(new MessageId(sender, sentTimestamp)));
return Optional.ofNullable(cache.remove(new MessageId(sender, sentTimestamp)));
}
private static final class MessageId {

View File

@@ -21,7 +21,6 @@ import org.thoughtcrime.securesms.mms.OutgoingGroupUpdateMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.InvalidMessageException;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceGroup;
@@ -32,6 +31,7 @@ import org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupC
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
public final class GroupUtil {
@@ -96,7 +96,7 @@ public final class GroupUtil {
if (groupContext.isPresent()) {
return Optional.of(idFromGroupContext(groupContext.get()));
}
return Optional.absent();
return Optional.empty();
}
public static @NonNull GroupMasterKey requireMasterKey(@NonNull byte[] masterKey) {

View File

@@ -34,12 +34,12 @@ import org.whispersystems.libsignal.IdentityKey;
import org.whispersystems.libsignal.SignalProtocolAddress;
import org.whispersystems.libsignal.state.SessionRecord;
import org.whispersystems.libsignal.state.SessionStore;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalSessionLock;
import org.whispersystems.signalservice.api.messages.multidevice.VerifiedMessage;
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import java.util.List;
import java.util.Optional;
public final class IdentityUtil {
@@ -95,7 +95,7 @@ public final class IdentityUtil {
}
if (remote) {
IncomingTextMessage incoming = new IncomingTextMessage(recipient.getId(), 1, time, -1, time, null, Optional.absent(), 0, false, null);
IncomingTextMessage incoming = new IncomingTextMessage(recipient.getId(), 1, time, -1, time, null, Optional.empty(), 0, false, null);
if (verified) incoming = new IncomingIdentityVerifiedMessage(incoming);
else incoming = new IncomingIdentityDefaultMessage(incoming);
@@ -133,7 +133,7 @@ public final class IdentityUtil {
}
}
IncomingTextMessage incoming = new IncomingTextMessage(recipientId, 1, time, -1, time, null, Optional.absent(), 0, false, null);
IncomingTextMessage incoming = new IncomingTextMessage(recipientId, 1, time, -1, time, null, Optional.empty(), 0, false, null);
IncomingIdentityUpdateMessage individualUpdate = new IncomingIdentityUpdateMessage(incoming);
Optional<InsertResult> insertResult = smsDatabase.insertMessageInbox(individualUpdate);

View File

@@ -39,7 +39,7 @@ public final class LocaleFeatureFlags {
public static @NonNull Optional<PushMediaConstraints.MediaConfig> getMediaQualityLevel() {
Map<String, Integer> countryValues = parseCountryValues(FeatureFlags.getMediaQualityLevels(), NOT_FOUND);
int level = getCountryValue(countryValues, Recipient.self().getE164().or(""), NOT_FOUND);
int level = getCountryValue(countryValues, Recipient.self().getE164().orElse(""), NOT_FOUND);
return Optional.ofNullable(PushMediaConstraints.MediaConfig.forLevel(level));
}
@@ -73,7 +73,7 @@ public final class LocaleFeatureFlags {
return false;
}
long countEnabled = getCountryValue(countryCodeValues, self.getE164().or(""), 0);
long countEnabled = getCountryValue(countryCodeValues, self.getE164().orElse(""), 0);
long currentUserBucket = BucketingUtil.bucket(flag, self.requireServiceId().uuid(), 1_000_000);
return countEnabled > currentUserBucket;

View File

@@ -7,11 +7,11 @@ import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.mms.TextSlide;
import org.thoughtcrime.securesms.providers.BlobProvider;
import org.whispersystems.libsignal.util.guava.Optional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Optional;
public final class MessageUtil {
@@ -23,7 +23,7 @@ public final class MessageUtil {
*/
public static SplitResult getSplitMessage(@NonNull Context context, @NonNull String rawText, int maxPrimaryMessageSize) {
String bodyText = rawText;
Optional<TextSlide> textSlide = Optional.absent();
Optional<TextSlide> textSlide = Optional.empty();
if (bodyText.length() > maxPrimaryMessageSize) {
bodyText = rawText.substring(0, maxPrimaryMessageSize);

View File

@@ -33,7 +33,6 @@ import org.whispersystems.libsignal.IdentityKey;
import org.whispersystems.libsignal.IdentityKeyPair;
import org.whispersystems.libsignal.InvalidKeyException;
import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
import org.whispersystems.signalservice.api.crypto.InvalidCiphertextException;
import org.whispersystems.signalservice.api.crypto.ProfileCipher;
@@ -51,6 +50,7 @@ import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.stream.Collectors;
import io.reactivex.rxjava3.core.Single;
@@ -125,7 +125,7 @@ public final class ProfileUtil {
@NonNull ProfileService profileService,
boolean allowUnidentifiedAccess)
{
Optional<UnidentifiedAccess> unidentifiedAccess = allowUnidentifiedAccess ? getUnidentifiedAccess(context, recipient) : Optional.absent();
Optional<UnidentifiedAccess> unidentifiedAccess = allowUnidentifiedAccess ? getUnidentifiedAccess(context, recipient) : Optional.empty();
Optional<ProfileKey> profileKey = ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey());
return Single.fromCallable(() -> toSignalServiceAddress(context, recipient))
@@ -222,8 +222,8 @@ public final class ProfileUtil {
public static void uploadProfileWithBadges(@NonNull Context context, @NonNull List<Badge> badges) throws IOException {
Log.d(TAG, "uploadProfileWithBadges()");
uploadProfile(Recipient.self().getProfileName(),
Optional.fromNullable(Recipient.self().getAbout()).or(""),
Optional.fromNullable(Recipient.self().getAboutEmoji()).or(""),
Optional.ofNullable(Recipient.self().getAbout()).orElse(""),
Optional.ofNullable(Recipient.self().getAboutEmoji()).orElse(""),
getSelfPaymentsAddressProtobuf(),
AvatarUploadParams.unchanged(AvatarHelper.hasAvatar(context, Recipient.self().getId())),
badges);
@@ -238,8 +238,8 @@ public final class ProfileUtil {
Log.d(TAG, "uploadProfileWithName()");
try (StreamDetails avatar = AvatarHelper.getSelfProfileAvatarStream(context)) {
uploadProfile(profileName,
Optional.fromNullable(Recipient.self().getAbout()).or(""),
Optional.fromNullable(Recipient.self().getAboutEmoji()).or(""),
Optional.ofNullable(Recipient.self().getAbout()).orElse(""),
Optional.ofNullable(Recipient.self().getAboutEmoji()).orElse(""),
getSelfPaymentsAddressProtobuf(),
AvatarUploadParams.unchanged(AvatarHelper.hasAvatar(context, Recipient.self().getId())),
Recipient.self().getBadges());
@@ -281,8 +281,8 @@ public final class ProfileUtil {
public static void uploadProfileWithAvatar(@Nullable StreamDetails avatar) throws IOException {
Log.d(TAG, "uploadProfileWithAvatar()");
uploadProfile(Recipient.self().getProfileName(),
Optional.fromNullable(Recipient.self().getAbout()).or(""),
Optional.fromNullable(Recipient.self().getAboutEmoji()).or(""),
Optional.ofNullable(Recipient.self().getAbout()).orElse(""),
Optional.ofNullable(Recipient.self().getAboutEmoji()).orElse(""),
getSelfPaymentsAddressProtobuf(),
AvatarUploadParams.forAvatar(avatar),
Recipient.self().getBadges());
@@ -320,9 +320,9 @@ public final class ProfileUtil {
profileName.serialize(),
about,
aboutEmoji,
Optional.fromNullable(paymentsAddress),
Optional.ofNullable(paymentsAddress),
avatar,
badgeIds).orNull();
badgeIds).orElse(null);
SignalStore.registrationValues().markHasUploadedProfile();
if (!avatar.keepTheSame) {
SignalDatabase.recipients().setProfileAvatar(Recipient.self().getId(), avatarPath);
@@ -350,13 +350,13 @@ public final class ProfileUtil {
return unidentifiedAccess.get().getTargetUnidentifiedAccess();
}
return Optional.absent();
return Optional.empty();
}
private static @NonNull SignalServiceAddress toSignalServiceAddress(@NonNull Context context, @NonNull Recipient recipient) throws IOException {
if (recipient.getRegistered() == RecipientDatabase.RegisteredState.NOT_REGISTERED) {
if (recipient.hasServiceId()) {
return new SignalServiceAddress(recipient.requireServiceId(), recipient.getE164().orNull());
return new SignalServiceAddress(recipient.requireServiceId(), recipient.getE164().orElse(null));
} else {
throw new IOException(recipient.getId() + " not registered!");
}

View File

@@ -6,7 +6,6 @@ import androidx.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* A nice interface for {@link LocalMetrics} that gives us a place to define string constants and nicer method names.

View File

@@ -11,8 +11,7 @@ import com.annimon.stream.Stream;
import net.zetetic.database.sqlcipher.SQLiteDatabase;
import org.thoughtcrime.securesms.database.model.DatabaseId;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.util.guava.Preconditions;
import org.whispersystems.signalservice.api.util.Preconditions;
import java.util.ArrayList;
import java.util.Arrays;

View File

@@ -83,7 +83,7 @@ public final class SupportEmailUtil {
}
private static CharSequence getSignalPackage(@NonNull Context context) {
return String.format("%s (%s)", BuildConfig.APPLICATION_ID, AppSignatureUtil.getAppSignature(context).or("Unknown"));
return String.format("%s (%s)", BuildConfig.APPLICATION_ID, AppSignatureUtil.getAppSignature(context).orElse("Unknown"));
}
private static CharSequence getRegistrationLockEnabled(@NonNull Context context) {

View File

@@ -28,10 +28,7 @@ import org.thoughtcrime.securesms.lock.RegistrationLockReminders;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.whispersystems.libsignal.util.Medium;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

View File

@@ -11,12 +11,12 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
import org.whispersystems.signalservice.api.push.ServiceId;
import java.io.IOException;
import java.util.Locale;
import java.util.Optional;
import java.util.regex.Pattern;
public class UsernameUtil {
@@ -45,7 +45,7 @@ public class UsernameUtil {
} else if (!FULL_PATTERN.matcher(value).matches()) {
return Optional.of(InvalidReason.INVALID_CHARACTERS);
} else {
return Optional.absent();
return Optional.empty();
}
}
@@ -67,10 +67,10 @@ public class UsernameUtil {
try {
Log.d(TAG, "No local user with this username. Searching remotely.");
SignalServiceProfile profile = ApplicationDependencies.getSignalServiceMessageReceiver().retrieveProfileByUsername(username, Optional.absent(), Locale.getDefault());
return Optional.fromNullable(profile.getServiceId());
SignalServiceProfile profile = ApplicationDependencies.getSignalServiceMessageReceiver().retrieveProfileByUsername(username, Optional.empty(), Locale.getDefault());
return Optional.ofNullable(profile.getServiceId());
} catch (IOException e) {
return Optional.absent();
return Optional.empty();
}
}

View File

@@ -51,7 +51,6 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.ComposeText;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.OutgoingLegacyMmsConnection;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -64,6 +63,7 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
public class Util {
@@ -245,19 +245,19 @@ public class Util {
final String localNumber = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number();
final Optional<String> countryIso = getSimCountryIso(context);
if (TextUtils.isEmpty(localNumber)) return Optional.absent();
if (!countryIso.isPresent()) return Optional.absent();
if (TextUtils.isEmpty(localNumber)) return Optional.empty();
if (!countryIso.isPresent()) return Optional.empty();
return Optional.fromNullable(PhoneNumberUtil.getInstance().parse(localNumber, countryIso.get()));
return Optional.ofNullable(PhoneNumberUtil.getInstance().parse(localNumber, countryIso.get()));
} catch (NumberParseException e) {
Log.w(TAG, e);
return Optional.absent();
return Optional.empty();
}
}
public static Optional<String> getSimCountryIso(Context context) {
String simCountryIso = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getSimCountryIso();
return Optional.fromNullable(simCountryIso != null ? simCountryIso.toUpperCase() : null);
return Optional.ofNullable(simCountryIso != null ? simCountryIso.toUpperCase() : null);
}
public static @NonNull <T> T firstNonNull(@Nullable T optional, @NonNull T fallback) {

View File

@@ -6,9 +6,9 @@ import android.view.View;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
import org.whispersystems.libsignal.IdentityKey;
public class VerifySpan extends ClickableSpan {

View File

@@ -11,7 +11,6 @@ import org.thoughtcrime.securesms.jobs.RemoteConfigRefreshJob;
import org.thoughtcrime.securesms.jobs.RetrieveReleaseChannelJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class VersionTracker {

View File

@@ -7,7 +7,9 @@ import androidx.recyclerview.widget.RecyclerView;
import org.thoughtcrime.securesms.components.RecyclerViewFastScroller;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
public final class RecyclerViewConcatenateAdapterStickyHeader extends RecyclerViewConcatenateAdapter
implements StickyHeaderDecoration.StickyHeaderAdapter,
@@ -16,12 +18,12 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
@Override
public long getHeaderId(int position) {
return getForPosition(position).transform(p -> p.first().getHeaderId(p.second())).or(-1L);
return getForPosition(position).map(p -> p.first().getHeaderId(p.second())).orElse(-1L);
}
@Override
public RecyclerView.ViewHolder onCreateHeaderViewHolder(ViewGroup parent, int position, int type) {
return getForPosition(position).transform(p -> p.first().onCreateHeaderViewHolder(parent, p.second(), type)).orNull();
return getForPosition(position).map(p -> p.first().onCreateHeaderViewHolder(parent, p.second(), type)).orElse(null);
}
@Override
@@ -39,13 +41,13 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
public CharSequence getBubbleText(int position) {
Optional<Pair<StickyHeaderDecoration.StickyHeaderAdapter, Integer>> forPosition = getForPosition(position);
return forPosition.transform(a -> {
return forPosition.map(a -> {
if (a.first() instanceof RecyclerViewFastScroller.FastScrollAdapter) {
return ((RecyclerViewFastScroller.FastScrollAdapter) a.first()).getBubbleText(a.second());
} else {
return "";
}
}).or("");
}).orElse("");
}
private Optional<Pair<StickyHeaderDecoration.StickyHeaderAdapter, Integer>> getForPosition(int position) {
@@ -56,6 +58,6 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
StickyHeaderDecoration.StickyHeaderAdapter sticky = (StickyHeaderDecoration.StickyHeaderAdapter) adapter;
return Optional.of(new Pair<>(sticky, localAdapterPosition.localPosition));
}
return Optional.absent();
return Optional.empty();
}
}

View File

@@ -7,7 +7,8 @@ import android.view.ViewGroup;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import org.whispersystems.libsignal.util.guava.Function;
import java.util.function.Function;
public class LayoutFactory<T extends MappingModel<T>> implements Factory<T> {
private Function<View, MappingViewHolder<T>> creator;

View File

@@ -10,13 +10,13 @@ import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView;
import org.thoughtcrime.securesms.util.NoCrossfadeChangeDefaultAnimator;
import org.whispersystems.libsignal.util.guava.Function;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Function;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function1;

View File

@@ -12,8 +12,6 @@ import androidx.annotation.RequiresApi;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.whispersystems.libsignal.util.guava.Function;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Collection;
import java.util.Collections;
@@ -22,7 +20,9 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
public final class SubscriptionManagerCompat {
@@ -36,7 +36,7 @@ public final class SubscriptionManagerCompat {
public Optional<Integer> getPreferredSubscriptionId() {
if (Build.VERSION.SDK_INT < 24) {
return Optional.absent();
return Optional.empty();
}
return Optional.of(SubscriptionManager.getDefaultSmsSubscriptionId());
@@ -44,10 +44,10 @@ public final class SubscriptionManagerCompat {
public Optional<SubscriptionInfoCompat> getActiveSubscriptionInfo(int subscriptionId) {
if (Build.VERSION.SDK_INT < 22) {
return Optional.absent();
return Optional.empty();
}
return Optional.fromNullable(getActiveSubscriptionInfoMap(false).get(subscriptionId));
return Optional.ofNullable(getActiveSubscriptionInfoMap(false).get(subscriptionId));
}
public @NonNull Collection<SubscriptionInfoCompat> getActiveAndReadySubscriptionInfos() {

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.util.fragments
import androidx.fragment.app.Fragment
import java.lang.Exception
/**
* Given an input type [T], find an instance of it first looking through all

View File

@@ -14,13 +14,13 @@ import com.annimon.stream.function.Predicate;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.util.concurrent.SerialMonoLifoExecutor;
import org.whispersystems.libsignal.util.guava.Function;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.function.Function;
public final class LiveDataUtil {