mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-21 10:17:56 +00:00
Update to libsignal 0.86.1
This commit is contained in:
@@ -9,7 +9,6 @@ import com.google.android.flexbox.FlexboxLayoutManager
|
||||
import com.google.android.flexbox.JustifyContent
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.libsignal.protocol.util.Pair
|
||||
import org.thoughtcrime.securesms.BuildConfig
|
||||
import org.thoughtcrime.securesms.badges.models.Badge
|
||||
import org.thoughtcrime.securesms.badges.models.Badge.Category.Companion.fromCode
|
||||
@@ -76,7 +75,7 @@ object Badges {
|
||||
"xxxhdpi" -> Pair(getBadgeImageUri(serviceBadge.sprites6[5]), "xxxhdpi")
|
||||
else -> Pair(getBadgeImageUri(serviceBadge.sprites6[3]), "xhdpi")
|
||||
}.also {
|
||||
Log.d(TAG, "Selected badge density ${it.second()}")
|
||||
Log.d(TAG, "Selected badge density ${it.second}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,8 +120,8 @@ object Badges {
|
||||
fromCode(serviceBadge.category),
|
||||
serviceBadge.name,
|
||||
serviceBadge.description,
|
||||
uriAndDensity.first(),
|
||||
uriAndDensity.second(),
|
||||
uriAndDensity.first,
|
||||
uriAndDensity.second,
|
||||
serviceBadge.expiration?.let { getTimestamp(it) } ?: 0,
|
||||
serviceBadge.isVisible,
|
||||
TimeUnit.SECONDS.toMillis(serviceBadge.duration)
|
||||
|
||||
@@ -8,7 +8,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.signal.core.util.CursorUtil;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchSortOrder;
|
||||
import org.thoughtcrime.securesms.database.RecipientTable;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
@@ -20,6 +19,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
/**
|
||||
* Repository for all contacts. Allows you to filter them via queries.
|
||||
*
|
||||
@@ -140,8 +141,8 @@ public class ContactRepository {
|
||||
for (int i = 0; i < mappers.size(); i++) {
|
||||
Pair<String, ValueMapper> pair = mappers.get(i);
|
||||
|
||||
positions.put(pair.first(), i);
|
||||
columnNames[i] = pair.first();
|
||||
positions.put(pair.getFirst(), i);
|
||||
columnNames[i] = pair.getFirst();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,17 +169,17 @@ public class ContactRepository {
|
||||
|
||||
@Override
|
||||
public String getString(int columnIndex) {
|
||||
return String.valueOf(mappers.get(columnIndex).second().get(wrapped));
|
||||
return String.valueOf(mappers.get(columnIndex).getSecond().get(wrapped));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(int columnIndex) {
|
||||
return (int) mappers.get(columnIndex).second().get(wrapped);
|
||||
return (int) mappers.get(columnIndex).getSecond().get(wrapped);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLong(int columnIndex) {
|
||||
return (long) mappers.get(columnIndex).second().get(wrapped);
|
||||
return (long) mappers.get(columnIndex).getSecond().get(wrapped);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -414,7 +414,7 @@ class ConversationRepository(
|
||||
if (details == null) {
|
||||
-1
|
||||
} else {
|
||||
SignalDatabase.messages.getMessagePositionInConversation(threadId, details.second(), details.first())
|
||||
SignalDatabase.messages.getMessagePositionInConversation(threadId, details.second, details.first)
|
||||
}
|
||||
}.subscribeOn(Schedulers.io())
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.signal.core.util.requireLong
|
||||
import org.signal.core.util.select
|
||||
import org.signal.core.util.update
|
||||
import org.signal.core.util.withinTransaction
|
||||
import org.signal.libsignal.protocol.util.Pair
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
|
||||
class GroupReceiptTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseTable(context, databaseHelper), RecipientIdDatabaseReference {
|
||||
@@ -86,12 +85,12 @@ class GroupReceiptTable(context: Context?, databaseHelper: SignalDatabase?) : Da
|
||||
val mmsMatchPrefix = "$MMS_ID = $mmsId AND"
|
||||
val unidentifiedQueries = SqlUtil.buildCollectionQuery(
|
||||
column = RECIPIENT_ID,
|
||||
values = results.filter { it.second() }.map { it.first().serialize() },
|
||||
values = results.filter { it.second }.map { it.first.serialize() },
|
||||
prefix = mmsMatchPrefix
|
||||
)
|
||||
val identifiedQueries = SqlUtil.buildCollectionQuery(
|
||||
column = RECIPIENT_ID,
|
||||
values = results.filterNot { it.second() }.map { it.first().serialize() },
|
||||
values = results.filterNot { it.second }.map { it.first.serialize() },
|
||||
prefix = mmsMatchPrefix
|
||||
)
|
||||
writableDatabase.withinTransaction { db ->
|
||||
|
||||
@@ -64,7 +64,6 @@ import org.signal.core.util.toSingleLine
|
||||
import org.signal.core.util.update
|
||||
import org.signal.core.util.withinTransaction
|
||||
import org.signal.libsignal.protocol.IdentityKey
|
||||
import org.signal.libsignal.protocol.util.Pair
|
||||
import org.thoughtcrime.securesms.attachments.Attachment
|
||||
import org.thoughtcrime.securesms.attachments.AttachmentId
|
||||
import org.thoughtcrime.securesms.attachments.DatabaseAttachment
|
||||
@@ -4295,12 +4294,12 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
do {
|
||||
pair = getGroupAddedBy(threadId, lastQuitChecked)
|
||||
|
||||
if (pair.first() != null) {
|
||||
return pair.first()
|
||||
if (pair.first != null) {
|
||||
return pair.first
|
||||
} else {
|
||||
lastQuitChecked = pair.second()
|
||||
lastQuitChecked = pair.second
|
||||
}
|
||||
} while (pair.second() != -1L)
|
||||
} while (pair.second != -1L)
|
||||
|
||||
return null
|
||||
}
|
||||
@@ -4925,7 +4924,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
}
|
||||
|
||||
for (expiringMessage in expiringMessages) {
|
||||
AppDependencies.expiringMessageManager.scheduleDeletion(expiringMessage.first(), true, proposedExpireStarted, expiringMessage.second())
|
||||
AppDependencies.expiringMessageManager.scheduleDeletion(expiringMessage.first, true, proposedExpireStarted, expiringMessage.second)
|
||||
}
|
||||
|
||||
for (threadId in updatedThreads) {
|
||||
|
||||
@@ -45,8 +45,8 @@ data class StickerPackParams(
|
||||
return (StickerUrl.parseActionUri(uri) ?: StickerUrl.parseShareLink(uri.toString()))
|
||||
.map { parseResult ->
|
||||
StickerPackParams(
|
||||
id = StickerPackId(parseResult.first()),
|
||||
key = StickerPackKey(parseResult.second())
|
||||
id = StickerPackId(parseResult.first),
|
||||
key = StickerPackKey(parseResult.second)
|
||||
)
|
||||
}.orNull()
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import org.signal.core.util.SetUtil;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||
import org.thoughtcrime.securesms.database.GroupReceiptTable;
|
||||
import org.thoughtcrime.securesms.database.GroupReceiptTable.GroupReceiptInfo;
|
||||
@@ -74,6 +73,8 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import okio.ByteString;
|
||||
import okio.Utf8;
|
||||
|
||||
@@ -455,7 +456,7 @@ public final class PushGroupSendJob extends PushSendJob {
|
||||
ProofRequiredException proofRequired = Stream.of(results).filter(r -> r.getProofRequiredFailure() != null).findLast().map(SendMessageResult::getProofRequiredFailure).orElse(null);
|
||||
List<SendMessageResult> successes = Stream.of(results).filter(result -> result.getSuccess() != null).toList();
|
||||
List<Pair<RecipientId, Boolean>> successUnidentifiedStatus = Stream.of(successes).map(result -> new Pair<>(accessList.requireIdByAddress(result.getAddress()), result.getSuccess().isUnidentified())).toList();
|
||||
Set<RecipientId> successIds = Stream.of(successUnidentifiedStatus).map(Pair::first).collect(Collectors.toSet());
|
||||
Set<RecipientId> successIds = Stream.of(successUnidentifiedStatus).map(Pair::getFirst).collect(Collectors.toSet());
|
||||
Set<NetworkFailure> resolvedNetworkFailures = Stream.of(existingNetworkFailures).filter(failure -> successIds.contains(failure.getRecipientId())).collect(Collectors.toSet());
|
||||
Set<IdentityKeyMismatch> resolvedIdentityFailures = Stream.of(existingIdentityMismatches).filter(failure -> successIds.contains(failure.getRecipientId())).collect(Collectors.toSet());
|
||||
List<RecipientId> unregisteredRecipients = Stream.of(results).filter(SendMessageResult::isUnregisteredFailure).map(result -> RecipientId.from(result.getAddress())).toList();
|
||||
|
||||
@@ -11,7 +11,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.SmoothScroller
|
||||
import com.bumptech.glide.Glide
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import org.signal.libsignal.protocol.util.Pair
|
||||
import org.thoughtcrime.securesms.LoggingFragment
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.database.DatabaseObserver
|
||||
|
||||
@@ -17,7 +17,6 @@ import org.signal.core.util.Result;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.InvalidMessageException;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.signal.libsignal.zkgroup.VerificationFailedException;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
|
||||
import org.signal.ringrtc.CallLinkEpoch;
|
||||
@@ -69,6 +68,8 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
@@ -287,8 +288,8 @@ public class LinkPreviewRepository {
|
||||
SignalExecutors.UNBOUNDED.execute(() -> {
|
||||
try {
|
||||
Pair<String, String> stickerParams = StickerUrl.parseShareLink(packUrl).orElse(new Pair<>("", ""));
|
||||
String packIdString = stickerParams.first();
|
||||
String packKeyString = stickerParams.second();
|
||||
String packIdString = stickerParams.getFirst();
|
||||
String packKeyString = stickerParams.getSecond();
|
||||
byte[] packIdBytes = Hex.fromStringCondensed(packIdString);
|
||||
byte[] packKeyBytes = Hex.fromStringCondensed(packKeyString);
|
||||
|
||||
|
||||
@@ -6,13 +6,14 @@ import android.content.pm.PackageManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.BuildConfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
public class LogSectionPermissions implements LogSection {
|
||||
@Override
|
||||
public @NonNull String getTitle() {
|
||||
@@ -35,11 +36,11 @@ public class LogSectionPermissions implements LogSection {
|
||||
return "Unable to retrieve.";
|
||||
}
|
||||
|
||||
Collections.sort(status, (o1, o2) -> o1.first().compareTo(o2.first()));
|
||||
Collections.sort(status, (o1, o2) -> o1.getFirst().compareTo(o2.getFirst()));
|
||||
|
||||
for (Pair<String, Boolean> pair : status) {
|
||||
out.append(pair.first()).append(": ");
|
||||
out.append(pair.second() ? "YES" : "NO");
|
||||
out.append(pair.getFirst()).append(": ");
|
||||
out.append(pair.getSecond() ? "YES" : "NO");
|
||||
out.append("\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@ import com.bumptech.glide.RequestManager;
|
||||
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
|
||||
|
||||
import org.signal.core.util.ByteSize;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.attachments.AttachmentId;
|
||||
import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
|
||||
@@ -69,6 +68,8 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
|
||||
|
||||
private static final long SELECTION_ANIMATION_DURATION = TimeUnit.MILLISECONDS.toMillis(150);
|
||||
@@ -461,7 +462,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
|
||||
|
||||
@Override
|
||||
public void onChanged(Pair<Recipient, Recipient> fromToPair) {
|
||||
line1.setText(describe(fromToPair.first(), fromToPair.second()));
|
||||
line1.setText(describe(fromToPair.getFirst(), fromToPair.getSecond()));
|
||||
}
|
||||
|
||||
protected @Nullable String getMediaTitle() {
|
||||
|
||||
@@ -36,7 +36,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback;
|
||||
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.AnimatingToggle;
|
||||
@@ -53,6 +52,8 @@ import org.signal.core.util.concurrent.SimpleTask;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
/**
|
||||
* Activity for displaying media attachments in-app
|
||||
*/
|
||||
@@ -276,7 +277,7 @@ public final class MediaOverviewActivity extends PassphraseRequiredActivity {
|
||||
? MediaOverviewPageFragment.GridMode.FOLLOW_MODEL
|
||||
: MediaOverviewPageFragment.GridMode.FIXED_DETAIL;
|
||||
|
||||
return MediaOverviewPageFragment.newInstance(threadId, pages.get(position).first(), gridMode);
|
||||
return MediaOverviewPageFragment.newInstance(threadId, pages.get(position).getFirst(), gridMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -286,7 +287,7 @@ public final class MediaOverviewActivity extends PassphraseRequiredActivity {
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
return pages.get(position).second();
|
||||
return pages.get(position).getSecond();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.signal.core.util.orNull
|
||||
import org.signal.libsignal.protocol.IdentityKey
|
||||
import org.signal.libsignal.protocol.InvalidKeyException
|
||||
import org.signal.libsignal.protocol.SignalProtocolAddress
|
||||
import org.signal.libsignal.protocol.util.Pair
|
||||
import org.signal.ringrtc.CallException
|
||||
import org.signal.ringrtc.CallId
|
||||
import org.signal.ringrtc.CallLinkRootKey
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.bumptech.glide.util.ContentLengthInputStream;
|
||||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
import java.io.FilterInputStream;
|
||||
@@ -21,6 +20,8 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import okhttp3.CacheControl;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.OkHttpClient;
|
||||
@@ -137,9 +138,9 @@ public class ChunkedDataFetcher {
|
||||
List<ByteRange> requestPattern;
|
||||
try {
|
||||
if (firstChunk.isPresent()) {
|
||||
requestPattern = Stream.of(getRequestPattern(contentLength - firstChunk.get().second()))
|
||||
.map(b -> new ByteRange(b.start + firstChunk.get().second(),
|
||||
b.end + firstChunk.get().second(),
|
||||
requestPattern = Stream.of(getRequestPattern(contentLength - firstChunk.get().getSecond()))
|
||||
.map(b -> new ByteRange(b.start + firstChunk.get().getSecond(),
|
||||
b.end + firstChunk.get().getSecond(),
|
||||
b.ignoreFirst))
|
||||
.toList();
|
||||
} else {
|
||||
@@ -156,7 +157,7 @@ public class ChunkedDataFetcher {
|
||||
List<InputStream> streams = new ArrayList<>(controllers.size() + (firstChunk.isPresent() ? 1 : 0));
|
||||
|
||||
if (firstChunk.isPresent()) {
|
||||
streams.add(firstChunk.get().first());
|
||||
streams.add(firstChunk.get().getFirst());
|
||||
}
|
||||
|
||||
Stream.of(controllers).forEach(compositeController::addController);
|
||||
|
||||
@@ -10,7 +10,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.BuildConfig;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.settings.SettingHeader;
|
||||
@@ -32,6 +31,8 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
import static java.util.Collections.emptyMap;
|
||||
|
||||
@@ -95,11 +96,11 @@ public final class SetCurrencyViewModel extends ViewModel {
|
||||
private int findSelectedIndex(MappingModelList items) {
|
||||
return Stream.of(items)
|
||||
.mapIndexed(Pair::new)
|
||||
.filter(p -> p.second() instanceof SingleSelectSetting.Item)
|
||||
.map(p -> new Pair<>(p.first(), (SingleSelectSetting.Item) p.second()))
|
||||
.filter(pair -> pair.second().isSelected())
|
||||
.filter(p -> p.getSecond() instanceof SingleSelectSetting.Item)
|
||||
.map(p -> new Pair<>(p.getFirst(), (SingleSelectSetting.Item) p.getSecond()))
|
||||
.filter(pair -> pair.getSecond().isSelected())
|
||||
.findFirst()
|
||||
.map(Pair::first)
|
||||
.map(Pair::getFirst)
|
||||
.orElse(-1);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.signal.core.util.ThreadUtil;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.BlockUnblockDialog;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.settings.conversation.ConversationSettingsActivity;
|
||||
@@ -46,6 +45,8 @@ import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
@@ -83,8 +84,8 @@ final class RecipientDialogViewModel extends ViewModel {
|
||||
LiveData<GroupTable.MemberLevel> recipientMemberLevel = Transformations.switchMap(recipient, source::getMemberLevel);
|
||||
|
||||
adminActionStatus = LiveDataUtil.combineLatest(localStatus, recipientMemberLevel, (statuses, memberLevel) -> {
|
||||
boolean localAdmin = statuses.first();
|
||||
boolean isLinkActive = statuses.second();
|
||||
boolean localAdmin = statuses.getFirst();
|
||||
boolean isLinkActive = statuses.getSecond();
|
||||
boolean inGroup = memberLevel.isInGroup();
|
||||
boolean recipientAdmin = memberLevel == GroupTable.MemberLevel.ADMINISTRATOR;
|
||||
|
||||
|
||||
@@ -45,7 +45,6 @@ import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.signal.imageeditor.core.renderers.BezierDrawingRenderer;
|
||||
import org.signal.imageeditor.core.renderers.FaceBlurRenderer;
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.animation.ResizeAnimation;
|
||||
import org.thoughtcrime.securesms.attachments.AttachmentSaver;
|
||||
@@ -76,6 +75,8 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
@@ -579,8 +580,8 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
|
||||
Matrix inverseCropPosition = model.getInverseCropPosition();
|
||||
|
||||
if (cachedFaceDetection != null) {
|
||||
if (cachedFaceDetection.first().equals(getUri()) && cachedFaceDetection.second().position.equals(inverseCropPosition)) {
|
||||
renderFaceBlurs(cachedFaceDetection.second());
|
||||
if (cachedFaceDetection.getFirst().equals(getUri()) && cachedFaceDetection.getSecond().position.equals(inverseCropPosition)) {
|
||||
renderFaceBlurs(cachedFaceDetection.getSecond());
|
||||
imageEditorHud.showBlurToast();
|
||||
return;
|
||||
} else {
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.annimon.stream.Stream;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.signal.libsignal.zkgroup.GenericServerPublicParams;
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException;
|
||||
import org.signal.libsignal.zkgroup.VerificationFailedException;
|
||||
@@ -115,6 +114,7 @@ import io.reactivex.rxjava3.core.Flowable;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import kotlin.text.Charsets;
|
||||
import kotlin.Pair;
|
||||
|
||||
import static org.thoughtcrime.securesms.events.WebRtcViewModel.GroupCallState.IDLE;
|
||||
import static org.thoughtcrime.securesms.events.WebRtcViewModel.State.CALL_INCOMING;
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment;
|
||||
@@ -37,6 +36,7 @@ import org.whispersystems.signalservice.api.util.OptionalUtil;
|
||||
import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
/**
|
||||
* Shows the contents of a pack and allows the user to install it (if not installed) or remove it
|
||||
@@ -92,8 +92,8 @@ public final class StickerPackPreviewActivity extends PassphraseRequiredActivity
|
||||
return;
|
||||
}
|
||||
|
||||
String packId = stickerParams.get().first();
|
||||
String packKey = stickerParams.get().second();
|
||||
String packId = stickerParams.get().getFirst();
|
||||
String packKey = stickerParams.get().getSecond();
|
||||
|
||||
initToolbar();
|
||||
initView();
|
||||
|
||||
@@ -11,13 +11,14 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.RequestManager;
|
||||
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.keyboard.sticker.KeyboardStickerListAdapter;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
public class StickerRolloverTouchListener implements RecyclerView.OnItemTouchListener {
|
||||
private final StickerPreviewPopup popup;
|
||||
private final RolloverEventListener eventListener;
|
||||
@@ -95,7 +96,7 @@ public class StickerRolloverTouchListener implements RecyclerView.OnItemTouchLis
|
||||
Pair<Object, String> stickerData = stickerRetriever.getStickerDataFromView(view);
|
||||
|
||||
if (stickerData != null) {
|
||||
showSticker(recyclerView, stickerData.first(), stickerData.second());
|
||||
showSticker(recyclerView, stickerData.getFirst(), stickerData.getSecond());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,13 +7,14 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.signal.core.util.Hex;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.whispersystems.signalservice.api.util.OptionalUtil;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
/**
|
||||
* Manages creating and parsing the various sticker pack URLs.
|
||||
*/
|
||||
|
||||
@@ -11,7 +11,6 @@ import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.protocol.IdentityKey;
|
||||
import org.signal.libsignal.protocol.IdentityKeyPair;
|
||||
import org.signal.libsignal.protocol.InvalidKeyException;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException;
|
||||
import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
|
||||
import org.signal.libsignal.zkgroup.profiles.ProfileKey;
|
||||
@@ -57,6 +56,8 @@ import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
|
||||
/**
|
||||
@@ -112,7 +113,7 @@ public final class ProfileUtil {
|
||||
throws IOException
|
||||
{
|
||||
Pair<Recipient, ServiceResponse<ProfileAndCredential>> response = retrieveProfile(context, recipient, requestType, allowUnidentifiedAccess).blockingGet();
|
||||
return new ProfileService.ProfileResponseProcessor(response.second()).getResultOrThrow();
|
||||
return new ProfileService.ProfileResponseProcessor(response.getSecond()).getResultOrThrow();
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
|
||||
@@ -12,7 +12,6 @@ import androidx.annotation.Nullable;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.signal.core.util.StringUtil;
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.components.spoiler.SpoilerAnnotation;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
@@ -21,6 +20,8 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
public class SearchUtil {
|
||||
|
||||
public static final int STRICT = 0;
|
||||
@@ -73,9 +74,9 @@ public class SearchUtil {
|
||||
for (Pair<Integer, Integer> range : ranges) {
|
||||
CharacterStyle[] styles = styleFactory.createStyles();
|
||||
for (CharacterStyle style : styles) {
|
||||
List<Annotation> annotations = SpoilerAnnotation.getSpoilerAnnotations(spanned, range.first(), range.second());
|
||||
List<Annotation> annotations = SpoilerAnnotation.getSpoilerAnnotations(spanned, range.getFirst(), range.getSecond());
|
||||
if (annotations.isEmpty()) {
|
||||
spanned.setSpan(style, range.first(), range.second(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
spanned.setSpan(style, range.getFirst(), range.getSecond(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,13 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import org.thoughtcrime.securesms.components.RecyclerViewFastScroller;
|
||||
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import kotlin.Pair;
|
||||
|
||||
|
||||
public final class RecyclerViewConcatenateAdapterStickyHeader extends RecyclerViewConcatenateAdapter
|
||||
implements StickyHeaderDecoration.StickyHeaderAdapter,
|
||||
@@ -18,12 +19,12 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
|
||||
|
||||
@Override
|
||||
public long getHeaderId(int position) {
|
||||
return getForPosition(position).map(p -> p.first().getHeaderId(p.second())).orElse(-1L);
|
||||
return getForPosition(position).map(p -> p.getFirst().getHeaderId(p.getSecond())).orElse(-1L);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateHeaderViewHolder(ViewGroup parent, int position, int type) {
|
||||
return getForPosition(position).map(p -> p.first().onCreateHeaderViewHolder(parent, p.second(), type)).orElse(null);
|
||||
return getForPosition(position).map(p -> p.getFirst().onCreateHeaderViewHolder(parent, p.getSecond(), type)).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,7 +34,7 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
|
||||
if (forPosition.isPresent()) {
|
||||
Pair<StickyHeaderDecoration.StickyHeaderAdapter, Integer> stickyHeaderAdapterIntegerPair = forPosition.get();
|
||||
//noinspection unchecked
|
||||
stickyHeaderAdapterIntegerPair.first().onBindHeaderViewHolder(viewHolder, stickyHeaderAdapterIntegerPair.second(), type);
|
||||
stickyHeaderAdapterIntegerPair.getFirst().onBindHeaderViewHolder(viewHolder, stickyHeaderAdapterIntegerPair.getSecond(), type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,8 +43,8 @@ public final class RecyclerViewConcatenateAdapterStickyHeader extends Recycle
|
||||
Optional<Pair<StickyHeaderDecoration.StickyHeaderAdapter, Integer>> forPosition = getForPosition(position);
|
||||
|
||||
return forPosition.map(a -> {
|
||||
if (a.first() instanceof RecyclerViewFastScroller.FastScrollAdapter) {
|
||||
return ((RecyclerViewFastScroller.FastScrollAdapter) a.first()).getBubbleText(a.second());
|
||||
if (a.getFirst() instanceof RecyclerViewFastScroller.FastScrollAdapter) {
|
||||
return ((RecyclerViewFastScroller.FastScrollAdapter) a.getFirst()).getBubbleText(a.getSecond());
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MediatorLiveData;
|
||||
|
||||
import org.signal.libsignal.protocol.util.Pair;
|
||||
import kotlin.Pair;
|
||||
|
||||
public final class LiveDataPair<A, B> extends MediatorLiveData<Pair<A, B>> {
|
||||
private A a;
|
||||
|
||||
Reference in New Issue
Block a user