mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 08:39:22 +01:00
Update libsignal-client to 0.14.0
This commit is contained in:
committed by
Cody Henthorne
parent
749bbf428d
commit
057231b9c3
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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!");
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user