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

@@ -24,10 +24,10 @@ import org.thoughtcrime.securesms.providers.BlobProvider;
import org.thoughtcrime.securesms.scribbles.ImageEditorFragment;
import org.thoughtcrime.securesms.util.DefaultValueLiveData;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.FileDescriptor;
import java.util.Collections;
import java.util.Optional;
public class AvatarSelectionActivity extends AppCompatActivity implements CameraFragment.Controller, ImageEditorFragment.Controller, MediaGalleryFragment.Callbacks {
@@ -94,8 +94,8 @@ public class AvatarSelectionActivity extends AppCompatActivity implements Camera
false,
false,
Optional.of(Media.ALL_MEDIA_BUCKET_ID),
Optional.absent(),
Optional.absent()));
Optional.empty(),
Optional.empty()));
}
@Override
@@ -137,7 +137,7 @@ public class AvatarSelectionActivity extends AppCompatActivity implements Camera
@Override
public @NonNull LiveData<Optional<Media>> getMostRecentMediaItem() {
return new DefaultValueLiveData<>(Optional.absent());
return new DefaultValueLiveData<>(Optional.empty());
}
@Override

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.mediasend;
import android.animation.Animator;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Matrix;
@@ -46,9 +45,9 @@ import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.Stopwatch;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.ByteArrayOutputStream;
import java.util.Optional;
/**
* Camera capture implemented with the legacy camera API's. Should only be used if sdk < 21.

View File

@@ -9,9 +9,9 @@ import androidx.lifecycle.LiveData;
import org.thoughtcrime.securesms.mediasend.camerax.CameraXUtil;
import org.thoughtcrime.securesms.mms.MediaConstraints;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.FileDescriptor;
import java.util.Optional;
public interface CameraFragment {

View File

@@ -51,10 +51,10 @@ import org.thoughtcrime.securesms.util.Stopwatch;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.thoughtcrime.securesms.video.VideoUtil;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.FileDescriptor;
import java.io.IOException;
import java.util.Optional;
/**
* Camera captured implemented using the CameraX SDK, which uses Camera2 under the hood. Should be

View File

@@ -15,10 +15,10 @@ import org.signal.imageeditor.core.model.EditorModel;
import org.thoughtcrime.securesms.fonts.FontTypefaceProvider;
import org.thoughtcrime.securesms.providers.BlobProvider;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Optional;
public final class ImageEditorModelRenderMediaTransform implements MediaTransform {
@@ -50,7 +50,7 @@ public final class ImageEditorModelRenderMediaTransform implements MediaTransfor
.withMimeType(MediaUtil.IMAGE_JPEG)
.createForSingleSessionOnDisk(context);
return new Media(uri, MediaUtil.IMAGE_JPEG, media.getDate(), bitmap.getWidth(), bitmap.getHeight(), outputStream.size(), 0, false, false, media.getBucketId(), media.getCaption(), Optional.absent());
return new Media(uri, MediaUtil.IMAGE_JPEG, media.getDate(), bitmap.getWidth(), bitmap.getHeight(), outputStream.size(), 0, false, false, media.getBucketId(), media.getCaption(), Optional.empty());
} catch (IOException e) {
Log.w(TAG, "Failed to render image. Using base image.");
return media;

View File

@@ -7,10 +7,10 @@ import android.os.Parcelable;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.internal.util.JsonUtil;
import java.io.IOException;
import java.util.Optional;
/**
* Represents a piece of media that the user has on their device.
@@ -70,11 +70,11 @@ public class Media implements Parcelable {
duration = in.readLong();
borderless = in.readInt() == 1;
videoGif = in.readInt() == 1;
bucketId = Optional.fromNullable(in.readString());
caption = Optional.fromNullable(in.readString());
bucketId = Optional.ofNullable(in.readString());
caption = Optional.ofNullable(in.readString());
try {
String json = in.readString();
transformProperties = json == null ? Optional.absent() : Optional.fromNullable(JsonUtil.fromJson(json, AttachmentDatabase.TransformProperties.class));
transformProperties = json == null ? Optional.empty() : Optional.ofNullable(JsonUtil.fromJson(json, AttachmentDatabase.TransformProperties.class));
} catch (IOException e) {
throw new AssertionError(e);
}
@@ -125,7 +125,7 @@ public class Media implements Parcelable {
}
public void setCaption(String caption) {
this.caption = Optional.fromNullable(caption);
this.caption = Optional.ofNullable(caption);
}
public Optional<AttachmentDatabase.TransformProperties> getTransformProperties() {
@@ -148,9 +148,9 @@ public class Media implements Parcelable {
dest.writeLong(duration);
dest.writeInt(borderless ? 1 : 0);
dest.writeInt(videoGif ? 1 : 0);
dest.writeString(bucketId.orNull());
dest.writeString(caption.orNull());
dest.writeString(transformProperties.transform(JsonUtil::toJson).orNull());
dest.writeString(bucketId.orElse(null));
dest.writeString(caption.orElse(null));
dest.writeString(transformProperties.map(JsonUtil::toJson).orElse(null));
}
public static final Creator<Media> CREATOR = new Creator<Media>() {

View File

@@ -28,7 +28,6 @@ import org.thoughtcrime.securesms.util.SqlUtil;
import org.thoughtcrime.securesms.util.Stopwatch;
import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.libsignal.util.guava.Optional;
import java.io.IOException;
import java.util.ArrayList;
@@ -38,6 +37,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -97,7 +97,7 @@ public class MediaRepository {
void getMostRecentItem(@NonNull Context context, @NonNull Callback<Optional<Media>> callback) {
if (!StorageUtil.canReadFromMediaStore()) {
Log.w(TAG, "No storage permissions!", new Throwable());
callback.onComplete(Optional.absent());
callback.onComplete(Optional.empty());
return;
}
@@ -253,7 +253,7 @@ public class MediaRepository {
long size = cursor.getLong(cursor.getColumnIndexOrThrow(Images.Media.SIZE));
long duration = !isImage ? cursor.getInt(cursor.getColumnIndexOrThrow(Video.Media.DURATION)) : 0;
media.add(fixMimeType(context, new Media(uri, mimetype, date, width, height, size, duration, false, false, Optional.of(bucketId), Optional.absent(), Optional.absent())));
media.add(fixMimeType(context, new Media(uri, mimetype, date, width, height, size, duration, false, false, Optional.of(bucketId), Optional.empty(), Optional.empty())));
}
}
@@ -305,7 +305,7 @@ public class MediaRepository {
@WorkerThread
private Optional<Media> getMostRecentItem(@NonNull Context context) {
List<Media> media = getMediaInBucket(context, Media.ALL_MEDIA_BUCKET_ID, Images.Media.EXTERNAL_CONTENT_URI, true);
return media.size() > 0 ? Optional.of(media.get(0)) : Optional.absent();
return media.size() > 0 ? Optional.of(media.get(0)) : Optional.empty();
}
@TargetApi(16)
@@ -332,7 +332,7 @@ public class MediaRepository {
long size = media.getSize();
if (size <= 0) {
Optional<Long> optionalSize = Optional.fromNullable(PartAuthority.getAttachmentSize(context, media.getUri()));
Optional<Long> optionalSize = Optional.ofNullable(PartAuthority.getAttachmentSize(context, media.getUri()));
size = optionalSize.isPresent() ? optionalSize.get() : 0;
}
@@ -346,7 +346,7 @@ public class MediaRepository {
height = dimens.second;
}
return new Media(media.getUri(), media.getMimeType(), media.getDate(), width, height, size, 0, media.isBorderless(), media.isVideoGif(), media.getBucketId(), media.getCaption(), Optional.absent());
return new Media(media.getUri(), media.getMimeType(), media.getDate(), width, height, size, 0, media.isBorderless(), media.isVideoGif(), media.getBucketId(), media.getCaption(), Optional.empty());
}
private Media getContentResolverPopulatedMedia(@NonNull Context context, @NonNull Media media) throws IOException {
@@ -372,7 +372,7 @@ public class MediaRepository {
height = dimens.second;
}
return new Media(media.getUri(), media.getMimeType(), media.getDate(), width, height, size, 0, media.isBorderless(), media.isVideoGif(), media.getBucketId(), media.getCaption(), Optional.absent());
return new Media(media.getUri(), media.getMimeType(), media.getDate(), width, height, size, 0, media.isBorderless(), media.isVideoGif(), media.getBucketId(), media.getCaption(), Optional.empty());
}
@VisibleForTesting

View File

@@ -13,7 +13,7 @@ import org.thoughtcrime.securesms.database.model.StoryType;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.MessageSender.PreUploadResult;
import org.thoughtcrime.securesms.util.ParcelUtil;
import org.whispersystems.libsignal.util.guava.Preconditions;
import org.whispersystems.signalservice.api.util.Preconditions;
import java.util.Collection;
import java.util.Collections;

View File

@@ -5,8 +5,6 @@ import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;
import org.signal.imageeditor.core.RendererContext;
public interface MediaTransform {
@WorkerThread

View File

@@ -92,8 +92,8 @@ public class MediaUploadRepository {
}
private boolean hasSameTransformProperties(@NonNull Media oldMedia, @NonNull Media newMedia) {
TransformProperties oldProperties = oldMedia.getTransformProperties().orNull();
TransformProperties newProperties = newMedia.getTransformProperties().orNull();
TransformProperties oldProperties = oldMedia.getTransformProperties().orElse(null);
TransformProperties newProperties = newMedia.getTransformProperties().orElse(null);
if (oldProperties == null || newProperties == null) {
return oldProperties == newProperties;
@@ -171,7 +171,7 @@ public class MediaUploadRepository {
PreUploadResult result = uploadResults.get(updated);
if (result != null) {
db.updateAttachmentCaption(result.getAttachmentId(), updated.getCaption().orNull());
db.updateAttachmentCaption(result.getAttachmentId(), updated.getCaption().orElse(null));
} else {
Log.w(TAG,"When updating captions, no pre-upload result could be found for media with URI: " + updated.getUri());
}
@@ -205,11 +205,11 @@ public class MediaUploadRepository {
public static @NonNull Attachment asAttachment(@NonNull Context context, @NonNull Media media) {
if (MediaUtil.isVideoType(media.getMimeType())) {
return new VideoSlide(context, media.getUri(), media.getSize(), media.isVideoGif(), media.getWidth(), media.getHeight(), media.getCaption().orNull(), media.getTransformProperties().orNull()).asAttachment();
return new VideoSlide(context, media.getUri(), media.getSize(), media.isVideoGif(), media.getWidth(), media.getHeight(), media.getCaption().orElse(null), media.getTransformProperties().orElse(null)).asAttachment();
} else if (MediaUtil.isGif(media.getMimeType())) {
return new GifSlide(context, media.getUri(), media.getSize(), media.getWidth(), media.getHeight(), media.isBorderless(), media.getCaption().orNull()).asAttachment();
return new GifSlide(context, media.getUri(), media.getSize(), media.getWidth(), media.getHeight(), media.isBorderless(), media.getCaption().orElse(null)).asAttachment();
} else if (MediaUtil.isImageType(media.getMimeType())) {
return new ImageSlide(context, media.getUri(), media.getMimeType(), media.getSize(), media.getWidth(), media.getHeight(), media.isBorderless(), media.getCaption().orNull(), null, media.getTransformProperties().orNull()).asAttachment();
return new ImageSlide(context, media.getUri(), media.getMimeType(), media.getSize(), media.getWidth(), media.getHeight(), media.isBorderless(), media.getCaption().orElse(null), null, media.getTransformProperties().orElse(null)).asAttachment();
} else if (MediaUtil.isTextType(media.getMimeType())) {
return new TextSlide(context, media.getUri(), null, media.getSize()).asAttachment();
} else {

View File

@@ -7,7 +7,9 @@ import androidx.annotation.WorkerThread;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.mms.SentMediaQuality;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
/**
* Add a {@link SentMediaQuality} value for {@link AttachmentDatabase.TransformProperties#getSentMediaQuality()} on the

View File

@@ -7,7 +7,9 @@ import androidx.annotation.WorkerThread;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.mms.SentMediaQuality;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
public final class VideoTrimTransform implements MediaTransform {

View File

@@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.mediasend.v2
import android.net.Uri
import org.thoughtcrime.securesms.database.AttachmentDatabase
import org.thoughtcrime.securesms.mediasend.Media
import org.whispersystems.libsignal.util.guava.Optional
import java.util.Optional
object MediaBuilder {
fun buildMedia(
@@ -16,8 +16,8 @@ object MediaBuilder {
duration: Long = 0L,
borderless: Boolean = false,
videoGif: Boolean = false,
bucketId: Optional<String> = Optional.absent(),
caption: Optional<String> = Optional.absent(),
transformProperties: Optional<AttachmentDatabase.TransformProperties> = Optional.absent()
bucketId: Optional<String> = Optional.empty(),
caption: Optional<String> = Optional.empty(),
transformProperties: Optional<AttachmentDatabase.TransformProperties> = Optional.empty()
) = Media(uri, mimeType, date, width, height, size, duration, borderless, videoGif, bucketId, caption, transformProperties)
}

View File

@@ -92,7 +92,7 @@ class MediaSelectionRepository(context: Context) {
val updatedMedia = oldToNewMediaMap.values.toList()
for (media in updatedMedia) {
Log.w(TAG, media.uri.toString() + " : " + media.transformProperties.transform { t: TransformProperties -> "" + t.isVideoTrim }.or("null"))
Log.w(TAG, media.uri.toString() + " : " + media.transformProperties.map { t: TransformProperties -> "" + t.isVideoTrim }.orElse("null"))
}
val singleRecipient: Recipient? = singleContact?.let { Recipient.resolved(it.recipientId) }

View File

@@ -240,7 +240,7 @@ class MediaSelectionViewModel(
fun getMediaConstraints(): MediaConstraints {
return if (store.state.transportOption.isSms) {
MediaConstraints.getMmsMediaConstraints(store.state.transportOption.simSubscriptionId.or(-1))
MediaConstraints.getMmsMediaConstraints(store.state.transportOption.simSubscriptionId.orElse(-1))
} else {
MediaConstraints.getPushMediaConstraints()
}

View File

@@ -27,8 +27,8 @@ object MediaValidator {
val truncatedMedia = filteredMedia.take(maxSelection)
val bucketId = if (truncatedMedia.isNotEmpty()) {
truncatedMedia.drop(1).fold(truncatedMedia.first().bucketId.or(Media.ALL_MEDIA_BUCKET_ID)) { acc, m ->
if (Util.equals(acc, m.bucketId.or(Media.ALL_MEDIA_BUCKET_ID))) {
truncatedMedia.drop(1).fold(truncatedMedia.first().bucketId.orElse(Media.ALL_MEDIA_BUCKET_ID)) { acc, m ->
if (Util.equals(acc, m.bucketId.orElse(Media.ALL_MEDIA_BUCKET_ID))) {
acc
} else {
Media.ALL_MEDIA_BUCKET_ID

View File

@@ -22,8 +22,8 @@ import org.thoughtcrime.securesms.mms.MediaConstraints
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.util.LifecycleDisposable
import org.thoughtcrime.securesms.util.navigation.safeNavigate
import org.whispersystems.libsignal.util.guava.Optional
import java.io.FileDescriptor
import java.util.Optional
private val TAG = Log.tag(MediaCaptureFragment::class.java)

View File

@@ -16,11 +16,11 @@ import org.thoughtcrime.securesms.util.CursorUtil
import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.StorageUtil
import org.thoughtcrime.securesms.video.VideoUtil
import org.whispersystems.libsignal.util.guava.Optional
import java.io.FileDescriptor
import java.io.FileInputStream
import java.io.IOException
import java.util.LinkedList
import java.util.Optional
private val TAG = Log.tag(MediaCaptureRepository::class.java)
@@ -105,8 +105,8 @@ class MediaCaptureRepository(context: Context) {
false,
false,
Optional.of(Media.ALL_MEDIA_BUCKET_ID),
Optional.absent(),
Optional.absent()
Optional.empty(),
Optional.empty()
)
} catch (e: IOException) {
return null
@@ -159,8 +159,8 @@ class MediaCaptureRepository(context: Context) {
false,
false,
Optional.of(bucketId),
Optional.absent(),
Optional.absent()
Optional.empty(),
Optional.empty()
)
)
)

View File

@@ -7,8 +7,8 @@ import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.util.SingleLiveEvent
import org.thoughtcrime.securesms.util.livedata.Store
import org.whispersystems.libsignal.util.guava.Optional
import java.io.FileDescriptor
import java.util.Optional
class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : ViewModel() {
@@ -35,7 +35,7 @@ class MediaCaptureViewModel(private val repository: MediaCaptureRepository) : Vi
}
fun getMostRecentMedia(): LiveData<Optional<Media>> {
return Transformations.map(store.stateLiveData) { Optional.fromNullable(it.mostRecentMedia) }
return Transformations.map(store.stateLiveData) { Optional.ofNullable(it.mostRecentMedia) }
}
private fun onMediaRendered(media: Media) {