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

@@ -10,6 +10,7 @@ import androidx.core.util.Consumer;
import org.signal.core.util.StreamUtil;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.groups.GroupChangeException;
import org.thoughtcrime.securesms.groups.GroupId;
@@ -19,9 +20,9 @@ import org.thoughtcrime.securesms.profiles.ProfileName;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.IOException;
import java.util.Optional;
class EditGroupProfileRepository implements EditProfileRepository {
@@ -76,11 +77,11 @@ class EditGroupProfileRepository implements EditProfileRepository {
return SignalDatabase.groups()
.getGroup(recipientId)
.transform(groupRecord -> {
.map(groupRecord -> {
String title = groupRecord.getTitle();
return title == null ? "" : title;
})
.or(() -> recipient.getGroupName(context));
.orElseGet(() -> recipient.getGroupName(context));
}, nameConsumer::accept);
}
@@ -91,11 +92,8 @@ class EditGroupProfileRepository implements EditProfileRepository {
return SignalDatabase.groups()
.getGroup(recipientId)
.transform(groupRecord -> {
String description = groupRecord.getDescription();
return description == null ? "" : description;
})
.or("");
.map(GroupDatabase.GroupRecord::getDescription)
.orElse("");
}, descriptionConsumer::accept);
}
@@ -123,14 +121,12 @@ class EditGroupProfileRepository implements EditProfileRepository {
@Override
public void getCurrentUsername(@NonNull Consumer<Optional<String>> callback) {
callback.accept(Optional.absent());
callback.accept(Optional.empty());
}
@WorkerThread
private RecipientId getRecipientId() {
return SignalDatabase.recipients().getByGroupId(groupId)
.or(() -> {
throw new AssertionError("Recipient ID for Group ID does not exist.");
});
.orElseThrow(() -> new AssertionError("Recipient ID for Group ID does not exist."));
}
}

View File

@@ -7,9 +7,6 @@ import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.navigation.NavDirections;
import androidx.navigation.NavGraph;
import androidx.navigation.Navigation;
import androidx.navigation.fragment.NavHostFragment;
import org.thoughtcrime.securesms.BaseActivity;

View File

@@ -34,8 +34,6 @@ import org.thoughtcrime.securesms.LoggingFragment;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.avatar.Avatars;
import org.thoughtcrime.securesms.avatar.picker.AvatarPickerFragment;
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.groups.ParcelableGroupId;
import org.thoughtcrime.securesms.mediasend.Media;

View File

@@ -6,7 +6,9 @@ import androidx.core.util.Consumer;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.profiles.ProfileName;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
interface EditProfileRepository {

View File

@@ -25,11 +25,11 @@ import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.registration.RegistrationUtil;
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
public class EditSelfProfileRepository implements EditProfileRepository {

View File

@@ -34,11 +34,11 @@ import org.thoughtcrime.securesms.util.StringUtil;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.adapter.AlwaysChangedDiffUtil;
import org.thoughtcrime.securesms.util.text.AfterTextChanged;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.crypto.ProfileCipher;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* Let's you edit the 'About' section of your profile.
@@ -116,7 +116,7 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity
onEmojiSelectedInternal(savedInstanceState.getString(KEY_SELECTED_EMOJI, ""));
} else {
this.bodyView.setText(Recipient.self().getAbout());
onEmojiSelectedInternal(Optional.fromNullable(Recipient.self().getAboutEmoji()).or(""));
onEmojiSelectedInternal(Optional.ofNullable(Recipient.self().getAboutEmoji()).orElse(""));
}
ViewUtil.focusAndMoveCursorToEndAndOpenKeyboard(bodyView);

View File

@@ -7,7 +7,6 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import org.thoughtcrime.securesms.profiles.ProfileName;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
public final class EditAboutViewModel extends ViewModel {

View File

@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.profiles.manage;
import android.content.Context;
import android.text.Editable;
import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;

View File

@@ -9,7 +9,6 @@ import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.NavDirections;
import androidx.navigation.NavGraph;
import androidx.navigation.Navigation;
import androidx.navigation.fragment.NavHostFragment;
import org.thoughtcrime.securesms.PassphraseRequiredActivity;

View File

@@ -42,9 +42,9 @@ import org.thoughtcrime.securesms.util.NameUtil;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.util.navigation.SafeNavigation;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Arrays;
import java.util.Optional;
public class ManageProfileFragment extends LoggingFragment {
@@ -141,7 +141,7 @@ public class ManageProfileFragment extends LoggingFragment {
viewModel = ViewModelProviders.of(this, new ManageProfileViewModel.Factory()).get(ManageProfileViewModel.class);
LiveData<Optional<byte[]>> avatarImage = Transformations.map(LiveDataUtil.distinctUntilChanged(viewModel.getAvatar(), (b1, b2) -> Arrays.equals(b1.getAvatar(), b2.getAvatar())),
b -> Optional.fromNullable(b.getAvatar()));
b -> Optional.ofNullable(b.getAvatar()));
avatarImage.observe(getViewLifecycleOwner(), this::presentAvatarImage);
viewModel.getAvatar().observe(getViewLifecycleOwner(), this::presentAvatarPlaceholder);
@@ -243,7 +243,7 @@ public class ManageProfileFragment extends LoggingFragment {
private void presentBadge(@NonNull Optional<Badge> badge) {
if (badge.isPresent() && badge.get().getVisible() && !badge.get().isExpired()) {
badgeView.setBadge(badge.orNull());
badgeView.setBadge(badge.orElse(null));
} else {
badgeView.setBadge(null);
}

View File

@@ -26,13 +26,13 @@ import org.thoughtcrime.securesms.util.DefaultValueLiveData;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.util.StreamDetails;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
class ManageProfileViewModel extends ViewModel {
@@ -46,8 +46,8 @@ class ManageProfileViewModel extends ViewModel {
private final LiveData<AvatarState> avatarState;
private final SingleLiveEvent<Event> events;
private final RecipientForeverObserver observer;
private final ManageProfileRepository repository;
private final MutableLiveData<Optional<Badge>> badge;
private final ManageProfileRepository repository;
private final MutableLiveData<Optional<Badge>> badge;
private byte[] previousAvatar;
@@ -59,7 +59,7 @@ class ManageProfileViewModel extends ViewModel {
this.aboutEmoji = new MutableLiveData<>();
this.events = new SingleLiveEvent<>();
this.repository = new ManageProfileRepository();
this.badge = new DefaultValueLiveData<>(Optional.absent());
this.badge = new DefaultValueLiveData<>(Optional.empty());
this.observer = this::onRecipientChanged;
this.avatarState = LiveDataUtil.combineLatest(Recipient.self().live().getLiveData(), internalAvatarState, (self, state) -> new AvatarState(state, self));
@@ -154,10 +154,10 @@ class ManageProfileViewModel extends ViewModel {
private void onRecipientChanged(@NonNull Recipient recipient) {
profileName.postValue(recipient.getProfileName());
username.postValue(recipient.getUsername().orNull());
username.postValue(recipient.getUsername().orElse(null));
about.postValue(recipient.getAbout());
aboutEmoji.postValue(recipient.getAboutEmoji());
badge.postValue(Optional.fromNullable(recipient.getFeaturedBadge()));
badge.postValue(Optional.ofNullable(recipient.getFeaturedBadge()));
renderAvatar(AvatarHelper.getSelfProfileAvatarStream(ApplicationDependencies.getApplication()));
}

View File

@@ -63,7 +63,7 @@ public class UsernameEditFragment extends LoggingFragment {
submitButton.setOnClickListener(v -> viewModel.onUsernameSubmitted(usernameInput.getText().toString()));
deleteButton.setOnClickListener(v -> viewModel.onUsernameDeleted());
usernameInput.setText(Recipient.self().getUsername().orNull());
usernameInput.setText(Recipient.self().getUsername().orElse(null));
usernameInput.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void onTextChanged(String text) {

View File

@@ -16,7 +16,9 @@ import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
import org.thoughtcrime.securesms.util.UsernameUtil;
import org.thoughtcrime.securesms.util.UsernameUtil.InvalidReason;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
class UsernameEditViewModel extends ViewModel {
@@ -42,7 +44,7 @@ class UsernameEditViewModel extends ViewModel {
return;
}
if (username.equals(Recipient.self().getUsername().orNull())) {
if (username.equals(Recipient.self().getUsername().orElse(null))) {
uiState.setValue(new State(ButtonState.SUBMIT_DISABLED, UsernameStatus.NONE));
return;
}
@@ -58,7 +60,7 @@ class UsernameEditViewModel extends ViewModel {
}
void onUsernameSubmitted(@NonNull String username) {
if (username.equals(Recipient.self().getUsername().orNull())) {
if (username.equals(Recipient.self().getUsername().orElse(null))) {
uiState.setValue(new State(ButtonState.SUBMIT_DISABLED, UsernameStatus.NONE));
return;
}

View File

@@ -1,20 +1,15 @@
package org.thoughtcrime.securesms.profiles.spoofing;
import android.content.Context;
import android.graphics.Outline;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.constraintlayout.widget.ConstraintLayout;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.AvatarImageView;
@@ -23,7 +18,6 @@ import org.thoughtcrime.securesms.contacts.avatars.FallbackPhoto20dp;
import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ViewUtil;
/**
* Banner displayed within a conversation when a review is suggested.

View File

@@ -76,7 +76,7 @@ class ReviewCardViewHolder extends RecyclerView.ViewHolder {
setNonContactSublines(context, reviewCard);
break;
case YOUR_CONTACT:
subtextLine1.setText(reviewCard.getReviewRecipient().getE164().orNull());
subtextLine1.setText(reviewCard.getReviewRecipient().getE164().orElse(null));
subtextLine2.setText(getGroupsInCommon(reviewCard.getInCommonGroupsCount()));
break;
default: