diff --git a/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java b/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java index 2e7cf946e5..0ded75f58a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java @@ -19,6 +19,7 @@ package org.thoughtcrime.securesms; import android.content.Intent; import android.os.Bundle; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -58,7 +59,7 @@ public class PushContactSelectionActivity extends ContactSelectionActivity { protected final void onFinishedSelection() { Intent resultIntent = getIntent(); List selectedContacts = contactsFragment.getSelectedContacts(); - List recipients = Stream.of(selectedContacts).map(sc -> sc.getOrCreateRecipientId()).toList(); + List recipients = Stream.of(selectedContacts).map(sc -> sc.getOrCreateRecipientId()).collect(Collectors.toList()); resultIntent.putParcelableArrayListExtra(KEY_SELECTED_RECIPIENTS, new ArrayList<>(recipients)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java index cf5110e26e..2078f74669 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java @@ -9,6 +9,7 @@ import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.fasterxml.jackson.databind.type.CollectionType; import com.fasterxml.jackson.databind.type.TypeFactory; @@ -72,7 +73,7 @@ public class RecentEmojiPageModel implements EmojiPageModel { } @Override public List getDisplayEmoji() { - return Stream.of(getEmoji()).map(Emoji::new).toList(); + return Stream.of(getEmoji()).map(Emoji::new).collect(Collectors.toList()); } @Override public @Nullable Uri getSpriteUri() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/mention/MentionAnnotation.java b/app/src/main/java/org/thoughtcrime/securesms/components/mention/MentionAnnotation.java index bc30322c86..3df383b479 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/mention/MentionAnnotation.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/mention/MentionAnnotation.java @@ -8,6 +8,7 @@ import android.text.Spanned; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.database.model.Mention; @@ -56,8 +57,7 @@ public final class MentionAnnotation { int spanStart = spanned.getSpanStart(annotation); int spanLength = spanned.getSpanEnd(annotation) - spanStart; return new Mention(RecipientId.from(annotation.getValue()), spanStart, spanLength); - }) - .toList(); + }).collect(Collectors.toList()); } return Collections.emptyList(); } @@ -68,7 +68,6 @@ public final class MentionAnnotation { public static @NonNull List getMentionAnnotations(@NonNull Spanned spanned, int start, int end) { return Stream.of(spanned.getSpans(start, end, Annotation.class)) - .filter(MentionAnnotation::isMentionAnnotation) - .toList(); + .filter(MentionAnnotation::isMentionAnnotation).collect(Collectors.toList()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsSyncAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsSyncAdapter.java index 5b30b6ffab..d4791db034 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsSyncAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsSyncAdapter.java @@ -73,8 +73,7 @@ public class ContactsSyncAdapter extends AbstractThreadedSyncAdapter { List recipients = Stream.of(unknownSystemE164s) .filter(s -> s.startsWith("+")) .map(s -> Recipient.external(s)) - .filter(it -> it != null) - .toList(); + .filter(it -> it != null).collect(com.annimon.stream.Collectors.toList()); Log.i(TAG, "There are " + unknownSystemE164s.size() + " unknown E164s, which are now " + recipients.size() + " recipients. Only syncing these specific contacts."); diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactFieldAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactFieldAdapter.java index 41daa4c414..41b14859cc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactFieldAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactFieldAdapter.java @@ -14,6 +14,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.bumptech.glide.RequestManager; import com.bumptech.glide.load.engine.DiskCacheStrategy; @@ -75,9 +76,9 @@ class ContactFieldAdapter extends RecyclerView.Adapter new Field(context, phone, locale)).toList()); - fields.addAll(Stream.of(emails).map(email -> new Field(context, email)).toList()); - fields.addAll(Stream.of(postalAddresses).map(address -> new Field(context, address)).toList()); + fields.addAll(Stream.of(phoneNumbers).map(phone -> new Field(context, phone, locale)).collect(Collectors.toList())); + fields.addAll(Stream.of(emails).map(email -> new Field(context, email)).collect(Collectors.toList())); + fields.addAll(Stream.of(postalAddresses).map(address -> new Field(context, address)).collect(Collectors.toList())); notifyDataSetChanged(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditViewModel.java index 66d36d86c7..a4dc8de21f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditViewModel.java @@ -8,6 +8,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.contactshare.Contact.Name; @@ -82,7 +83,7 @@ class ContactShareEditViewModel extends ViewModel { } private List trimSelectables(List selectables) { - return Stream.of(selectables).filter(Selectable::isSelected).toList(); + return Stream.of(selectables).filter(Selectable::isSelected).collect(Collectors.toList()); } @NonNull diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java index 07ce55e95d..8f5250de6d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java @@ -98,7 +98,7 @@ public final class ContactUtil { return null; } - List mobileNumbers = Stream.of(contact.getPhoneNumbers()).filter(number -> number.getType() == Phone.Type.MOBILE).toList(); + List mobileNumbers = Stream.of(contact.getPhoneNumbers()).filter(number -> number.getType() == Phone.Type.MOBILE).collect(com.annimon.stream.Collectors.toList()); if (mobileNumbers.size() > 0) { return mobileNumbers.get(0); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java index b1e387380f..5e6c33b31f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java @@ -30,6 +30,7 @@ import androidx.core.view.ViewKt; import androidx.core.view.WindowInsetsCompat; import androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.ui.compose.SignalIcons; @@ -827,7 +828,7 @@ public final class ConversationReactionOverlay extends FrameLayout { anim.setTarget(v); return anim; }) - .toList()); + .collect(Collectors.toList())); Animator backgroundHideAnim = AnimatorInflaterCompat.loadAnimator(getContext(), android.R.animator.fade_out); backgroundHideAnim.setTarget(backgroundView); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeDialog.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeDialog.java index ffea3077ce..df5ef7b83c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeDialog.java @@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -74,8 +75,7 @@ public final class SafetyNumberChangeDialog extends DialogFragment implements Sa List ids = Stream.of(identityRecords) .filter(identityRecord -> !identityRecord.isFirstUse()) .map(record -> record.getRecipientId().serialize()) - .distinct() - .toList(); + .distinct().collect(Collectors.toList()); Bundle arguments = new Bundle(); arguments.putStringArray(RECIPIENT_IDS_EXTRA, ids.toArray(new String[0])); @@ -94,8 +94,7 @@ public final class SafetyNumberChangeDialog extends DialogFragment implements Sa List ids = Stream.of(recipientIds) .map(RecipientId::serialize) - .distinct() - .toList(); + .distinct().collect(Collectors.toList()); Bundle arguments = new Bundle(); arguments.putStringArray(RECIPIENT_IDS_EXTRA, ids.toArray(new String[0])); @@ -118,7 +117,7 @@ public final class SafetyNumberChangeDialog extends DialogFragment implements Sa super.onActivityCreated(savedInstanceState); //noinspection ConstantConditions - List recipientIds = Stream.of(getArguments().getStringArray(RECIPIENT_IDS_EXTRA)).map(RecipientId::from).toList(); + List recipientIds = Stream.of(getArguments().getStringArray(RECIPIENT_IDS_EXTRA)).map(RecipientId::from).collect(Collectors.toList()); long messageId = getArguments().getLong(MESSAGE_ID_EXTRA, -1); String messageType = getArguments().getString(MESSAGE_TYPE_EXTRA, null); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeRepository.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeRepository.java index ed45418d37..74c10419c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/SafetyNumberChangeRepository.java @@ -89,11 +89,10 @@ public final class SafetyNumberChangeRepository { messageRecord = getMessageRecord(messageId, messageType); } - List recipients = Stream.of(recipientIds).map(Recipient::resolved).toList(); + List recipients = Stream.of(recipientIds).map(Recipient::resolved).collect(com.annimon.stream.Collectors.toList()); List changedRecipients = Stream.of(AppDependencies.getProtocolStore().aci().identities().getIdentityRecords(recipients).getIdentityRecords()) - .map(record -> new ChangedRecipient(Recipient.resolved(record.getRecipientId()), record)) - .toList(); + .map(record -> new ChangedRecipient(Recipient.resolved(record.getRecipientId()), record)).collect(com.annimon.stream.Collectors.toList()); Log.d(TAG, "Safety number change state, message: " + (messageRecord != null ? messageRecord.getId() : "null") + " records: " + Util.join(changedRecipients, ",")); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/TrustAndVerifyResult.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/TrustAndVerifyResult.java index cbbd3b371e..1320042563 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/TrustAndVerifyResult.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/TrustAndVerifyResult.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.conversation.ui.error; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.database.model.MessageRecord; @@ -28,7 +29,7 @@ public class TrustAndVerifyResult { } TrustAndVerifyResult(@NonNull List changedRecipients, @Nullable MessageRecord messageRecord, @NonNull Result result) { - this.changedRecipients = Stream.of(changedRecipients).map(changedRecipient -> changedRecipient.getRecipient().getId()).toList(); + this.changedRecipients = Stream.of(changedRecipients).map(changedRecipient -> changedRecipient.getRecipient().getId()).collect(Collectors.toList()); this.messageRecord = messageRecord; this.result = result; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerViewModel.java index 56fcd5d8c2..2d63eab38d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerViewModel.java @@ -8,6 +8,7 @@ import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.conversation.ui.mentions.MentionsPickerRepository.MentionQuery; @@ -40,7 +41,7 @@ public class MentionsPickerViewModel extends ViewModel { LiveData mentionQuery = LiveDataUtil.combineLatest(liveQuery, fullMembers, (q, m) -> new MentionQuery(q.query, m)); - this.mentionList = LiveDataUtil.mapAsync(mentionQuery, q -> Stream.of(mentionsPickerRepository.search(q)).>map(MentionViewState::new).toList()); + this.mentionList = LiveDataUtil.mapAsync(mentionQuery, q -> Stream.of(mentionsPickerRepository.search(q)).>map(MentionViewState::new).collect(Collectors.toList())); } @NonNull LiveData>> getMentionList() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/SealedSenderAccessUtil.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/SealedSenderAccessUtil.java index eb4376682b..b6532db44d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/SealedSenderAccessUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/SealedSenderAccessUtil.java @@ -99,7 +99,7 @@ public class SealedSenderAccessUtil { return Optional.ofNullable(unidentifiedAccess); }).collect(Collectors.toList()); - int unidentifiedCount = Stream.of(access).filter(Optional::isPresent).toList().size(); + int unidentifiedCount = Stream.of(access).filter(Optional::isPresent).collect(com.annimon.stream.Collectors.toList()).size(); int otherCount = access.size() - unidentifiedCount; if (log) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MentionUtil.java b/app/src/main/java/org/thoughtcrime/securesms/database/MentionUtil.java index 57f40eca18..508c5ff8a9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MentionUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MentionUtil.java @@ -122,8 +122,7 @@ public final class MentionUtil { .map(mention -> { RecipientId id = Recipient.externalPush(ServiceId.parseOrThrow(mention.mentionUuid)).getId(); return new Mention(id, mention.start, mention.length); - }) - .toList(); + }).collect(com.annimon.stream.Collectors.toList()); } else { return Collections.emptyList(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt index 687f98cc2c..48c6fb6451 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V149_LegacyMigrations.kt @@ -13,6 +13,7 @@ import android.os.SystemClock import android.preference.PreferenceManager import android.text.TextUtils import androidx.core.content.contentValuesOf +import com.annimon.stream.Collectors import com.annimon.stream.Stream import org.signal.core.models.ServiceId.ACI import org.signal.core.util.Base64 @@ -650,7 +651,7 @@ object V149_LegacyMigrations : SignalDatabaseMigration { val notificationManager = ServiceUtil.getNotificationManager(context) val channels = Stream.of(notificationManager.notificationChannels) .filter { c: NotificationChannel -> c.id.startsWith("contact_") } - .toList() + .collect(Collectors.toList()) Log.i(TAG, "Migrating " + channels.size + " channels to use RecipientId's.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/LiveUpdateMessage.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/LiveUpdateMessage.java index 92cdfa9056..9ffd975fb8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/LiveUpdateMessage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/LiveUpdateMessage.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.Transformations; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.fonts.SignalSymbols; @@ -42,8 +43,7 @@ public final class LiveUpdateMessage { } List> allMentionedRecipients = Stream.of(updateDescription.getMentioned()) - .map(uuid -> Recipient.resolved(RecipientId.from(uuid)).live().getLiveData()) - .toList(); + .map(uuid -> Recipient.resolved(RecipientId.from(uuid)).live().getLiveData()).collect(Collectors.toList()); LiveData mentionedRecipientChangeStream = allMentionedRecipients.isEmpty() ? LiveDataUtil.just(new Object()) : LiveDataUtil.merge(allMentionedRecipients); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java index d866d95749..892584b150 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; import androidx.core.content.ContextCompat; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.Base64; @@ -595,8 +596,7 @@ public abstract class MessageRecord extends DisplayRecord { List joinedMembers = Stream.of(groupCallUpdateDetails.inCallUuids) .map(UuidUtil::parseOrNull).filter(Objects::nonNull) - .map(ACI::from) - .toList(); + .map(ACI::from).collect(Collectors.toList()); UpdateDescription.SpannableFactory stringFactory = new GroupCallUpdateMessageFactory(context, joinedMembers, withTime, groupCallUpdateDetails); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java b/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java index 57bf1da59f..e523e10aef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java @@ -9,6 +9,7 @@ import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Transformations; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.models.ServiceId; @@ -92,8 +93,7 @@ public final class LiveGroup { Recipient recipient = Recipient.resolved(m); return new GroupMemberEntry.FullMember(recipient, g.isAdmin(recipient)); }) - .sorted(MEMBER_ORDER) - .toList()); + .sorted(MEMBER_ORDER).collect(Collectors.toList())); } protected static LiveData> mapToRequestingMembers(@NonNull LiveData groupRecord) { @@ -110,8 +110,7 @@ public final class LiveGroup { .map(requestingMember -> { Recipient recipient = Recipient.externalPush(ServiceId.parseOrThrow(requestingMember.aciBytes)); return new GroupMemberEntry.RequestingMember(recipient, selfAdmin); - }) - .toList(); + }).collect(Collectors.toList()); }); } @@ -196,8 +195,7 @@ public final class LiveGroup { public LiveData> getNonAdminFullMembers() { return Transformations.map(fullMembers, members -> Stream.of(members) - .filter(fullMember -> !fullMember.isAdmin()) - .toList()); + .filter(fullMember -> !fullMember.isAdmin()).collect(Collectors.toList())); } public LiveData> getFullMembers() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/GroupMemberListView.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/GroupMemberListView.java index 437717d68c..2131ecb1e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/GroupMemberListView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/GroupMemberListView.java @@ -10,6 +10,7 @@ import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.R; @@ -81,7 +82,7 @@ public final class GroupMemberListView extends RecyclerView { } public void setDisplayOnlyMembers(@NonNull List recipients) { - membersAdapter.updateData(Stream.of(recipients).map(r -> new GroupMemberEntry.FullMember(r, false)).toList()); + membersAdapter.updateData(Stream.of(recipients).map(r -> new GroupMemberEntry.FullMember(r, false)).collect(Collectors.toList())); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminViewModel.java index 8d5f520c4d..3b362e734f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminViewModel.java @@ -7,6 +7,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.dependencies.AppDependencies; @@ -50,7 +51,7 @@ final class ChooseNewAdminViewModel extends ViewModel { void updateAdminsAndLeave(@NonNull Consumer consumer) { //noinspection ConstantConditions - List recipientIds = Stream.of(selection.getValue()).map(entry -> entry.getMember().getId()).toList(); + List recipientIds = Stream.of(selection.getValue()).map(entry -> entry.getMember().getId()).collect(Collectors.toList()); SimpleTask.run(() -> repository.updateAdminsAndLeave(groupId, recipientIds), consumer::accept); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java index 8bd20218bf..8676ee10df 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/JobController.java @@ -120,7 +120,7 @@ class JobController { @WorkerThread void submitNewJobChain(@NonNull List> chain) { synchronized (this) { - chain = Stream.of(chain).filter(jobs -> !jobs.isEmpty()).toList(); + chain = Stream.of(chain).filter(jobs -> !jobs.isEmpty()).collect(Collectors.toList()); if (chain.isEmpty()) { Log.w(TAG, "Tried to submit an empty job chain. Skipping."); @@ -169,8 +169,7 @@ class JobController { if (dependsOnQueue != null) { List inQueue = Stream.of(jobStorage.getJobsInQueue(dependsOnQueue)) - .map(JobSpec::getId) - .toList(); + .map(JobSpec::getId).collect(Collectors.toList()); allDependsOn.addAll(inQueue); aliveDependsOn.addAll(inQueue); @@ -310,8 +309,7 @@ class JobController { List constraints = Stream.of(jobStorage.getConstraintSpecs(job.getId())) .map(ConstraintSpec::getFactoryKey) - .map(constraintInstantiator::instantiate) - .toList(); + .map(constraintInstantiator::instantiate).collect(Collectors.toList()); Log.i(TAG, JobLogger.format(job, "Scheduling a retry in " + backoffInterval + " ms.")); @@ -330,8 +328,7 @@ class JobController { List updates = Stream.of(jobStorage.getDependencySpecsThatDependOnJob(job.getId())) .map(DependencySpec::getJobId) .map(jobStorage::getJobSpec) - .map(jobSpec -> mapToJobWithInputData(jobSpec, outputData)) - .toList(); + .map(jobSpec -> mapToJobWithInputData(jobSpec, outputData)).collect(Collectors.toList()); jobStorage.updateJobs(updates); } @@ -352,14 +349,13 @@ class JobController { .map(jobSpec -> { List constraintSpecs = jobStorage.getConstraintSpecs(jobSpec.getId()); return createJob(jobSpec, constraintSpecs); - }) - .toList(); + }).collect(Collectors.toList()); List all = new ArrayList<>(dependents.size() + 1); all.add(job); all.addAll(dependents); - jobStorage.deleteJobs(Stream.of(all).map(Job::getId).toList()); + jobStorage.deleteJobs(Stream.of(all).map(Job::getId).collect(Collectors.toList())); Stream.of(all).forEach(j -> jobTracker.onStateChange(j, JobTracker.JobState.FAILURE)); return dependents; @@ -594,7 +590,7 @@ class JobController { for (Job job : jobList) { fullSpecs.add(buildFullSpec(job, dependsOn)); } - dependsOn = Stream.of(jobList).map(Job::getId).toList(); + dependsOn = Stream.of(jobList).map(Job::getId).collect(Collectors.toList()); } jobStorage.insertJobs(fullSpecs); @@ -622,8 +618,7 @@ class JobController { job.getParameters().getInitialDelay()); List constraintSpecs = Stream.of(job.getParameters().getConstraintKeys()) - .map(key -> new ConstraintSpec(jobSpec.getId(), key, jobSpec.isMemoryOnly())) - .toList(); + .map(key -> new ConstraintSpec(jobSpec.getId(), key, jobSpec.isMemoryOnly())).collect(Collectors.toList()); List dependencySpecs = Stream.of(dependsOn) .map(depends -> { @@ -631,8 +626,7 @@ class JobController { boolean memoryOnly = job.getParameters().isMemoryOnly() || (dependsOnJobSpec != null && dependsOnJobSpec.isMemoryOnly()); return new DependencySpec(job.getId(), depends, memoryOnly); - }) - .toList(); + }).collect(Collectors.toList()); return new FullSpec(jobSpec, constraintSpecs, dependencySpecs); } @@ -660,8 +654,7 @@ class JobController { List constraintSpecs = jobStorage.getConstraintSpecs(minimalJobSpec.getId()); List constraints = Stream.of(constraintSpecs) .map(ConstraintSpec::getFactoryKey) - .map(constraintInstantiator::instantiate) - .toList(); + .map(constraintInstantiator::instantiate).collect(Collectors.toList()); return Stream.of(constraints).allMatch(Constraint::isMet); }); @@ -690,8 +683,7 @@ class JobController { Log.e(TAG, "Failed to instantiate job! Failing it and its dependencies without calling Job#onFailure. Crash imminent."); List failIds = Stream.of(jobStorage.getDependencySpecsThatDependOnJob(jobSpec.getId())) - .map(DependencySpec::getJobId) - .toList(); + .map(DependencySpec::getJobId).collect(Collectors.toList()); jobStorage.deleteJob(jobSpec.getId()); jobStorage.deleteJobs(failIds); @@ -708,7 +700,7 @@ class JobController { .setLifespan(jobSpec.getLifespan()) .setMaxAttempts(jobSpec.getMaxAttempts()) .setQueue(jobSpec.getQueueKey()) - .setConstraints(Stream.of(constraintSpecs).map(ConstraintSpec::getFactoryKey).toList()) + .setConstraints(Stream.of(constraintSpecs).map(ConstraintSpec::getFactoryKey).collect(Collectors.toList())) .setInputData(jobSpec.getSerializedInputData()) .build(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java index 68f3c610b8..f7880c7283 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java @@ -6,6 +6,7 @@ import android.net.Uri; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -128,8 +129,7 @@ public class DownloadLatestEmojiDataJob extends BaseJob { String format = emojiData.getFormat(); List imagePaths = Stream.of(emojiData.getDataPages()) .map(EmojiPageModel::getSpriteUri) - .map(Uri::getLastPathSegment) - .toList(); + .map(Uri::getLastPathSegment).collect(Collectors.toList()); String density = resolveDensity(supportedDensities, targetVersion.getDensity()); targetVersion = new EmojiFiles.Version(targetVersion.getVersion(), targetVersion.getUuid(), density); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java index fe6a1e4769..232adcfcfd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupCallUpdateSendJob.java @@ -63,8 +63,7 @@ public class GroupCallUpdateSendJob extends BaseJob { List recipientIds = Stream.of(RecipientUtil.getEligibleForSending(Recipient.resolvedList(conversationRecipient.getParticipantIds()))) .filter(recipient -> !recipient.isSelf()) - .map(Recipient::getId) - .toList(); + .map(Recipient::getId).collect(com.annimon.stream.Collectors.toList()); return new GroupCallUpdateSendJob(recipientId, eraId, @@ -127,7 +126,7 @@ public class GroupCallUpdateSendJob extends BaseJob { return; } - List destinations = Stream.of(recipients).map(Recipient::resolved).toList(); + List destinations = Stream.of(recipients).map(Recipient::resolved).collect(com.annimon.stream.Collectors.toList()); List completions = deliver(conversationRecipient, destinations); for (Recipient completion : completions) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java index ca7a9db451..d6cb5d1e93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/IndividualSendJob.java @@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.Util; @@ -277,7 +278,7 @@ public class IndividualSendJob extends PushSendJob { SignalServiceMessageSender messageSender = AppDependencies.getSignalServiceMessageSender(); SignalServiceAddress address = RecipientUtil.toSignalServiceAddress(context, messageRecipient); - List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).toList(); + List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).collect(Collectors.toList()); List serviceAttachments = getAttachmentPointersFor(attachments); Optional profileKey = getProfileKey(messageRecipient); Optional sticker = getStickerFor(message); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java index e47f81d464..288f0ecde6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.jobs; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.fasterxml.jackson.annotation.JsonProperty; @@ -171,8 +172,7 @@ public class MultiDeviceReadUpdateJob extends BaseJob { throw new AssertionError(e); } }) - .map(id -> new SyncMessageId(RecipientId.from(id.recipientId), id.timestamp)) - .toList(); + .map(id -> new SyncMessageId(RecipientId.from(id.recipientId), id.timestamp)).collect(Collectors.toList()); return new MultiDeviceReadUpdateJob(parameters, ids); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java index d48d14aef7..e7bb4272d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.jobs; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.fasterxml.jackson.annotation.JsonProperty; @@ -166,8 +167,7 @@ public class MultiDeviceViewedUpdateJob extends BaseJob { throw new AssertionError(e); } }) - .map(id -> new SyncMessageId(RecipientId.from(id.recipientId), id.timestamp)) - .toList(); + .map(id -> new SyncMessageId(RecipientId.from(id.recipientId), id.timestamp)).collect(Collectors.toList()); return new MultiDeviceViewedUpdateJob(parameters, ids); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java index 73e835382d..1b9de07525 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java @@ -95,10 +95,8 @@ public class ProfileKeySendJob extends BaseJob { List recipients = conversationRecipient.isGroup() ? RecipientUtil.getEligibleForSending(Recipient.resolvedList(conversationRecipient.getParticipantIds())) .stream() - .map(Recipient::getId) - .collect(Collectors.toList()) - : Stream.of(conversationRecipient.getId()) - .collect(Collectors.toList()); + .map(Recipient::getId).collect(Collectors.toList()) + : Stream.of(conversationRecipient.getId()).collect(Collectors.toList()); recipients.remove(Recipient.self().getId()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java index 27b8c2ee0c..8074ed8892 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java @@ -178,7 +178,7 @@ public final class PushDistributionListSendJob extends PushSendJob { targets.addAll(filterRecipientIds.stream().map(Recipient::resolved).collect(Collectors.toList())); targets.addAll(existingNetworkFailures.stream().map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).collect(Collectors.toList())); } else if (!existingNetworkFailures.isEmpty()) { - targets = Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).toList(); + targets = Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).collect(com.annimon.stream.Collectors.toList()); } else { Stories.SendData data = Stories.getRecipientsToSendTo(messageId, message.getSentTimeMillis(), message.getStoryType().isStoryWithReplies()); targets = data.getTargets(); @@ -206,7 +206,7 @@ public final class PushDistributionListSendJob extends PushSendJob { throws IOException, UntrustedIdentityException, UndeliverableMessageException { try { - List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).toList(); + List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).collect(com.annimon.stream.Collectors.toList()); List attachmentPointers = getAttachmentPointersFor(attachments); List bodyRanges = getBodyRanges(message); boolean isRecipientUpdate = Stream.of(SignalDatabase.groupReceipts().getGroupReceiptInfo(messageId)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index 7840e18b83..ef0cbe2ae0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -234,10 +234,10 @@ public final class PushGroupSendJob extends PushSendJob { if (Util.hasItems(filterRecipients)) { target = new ArrayList<>(filterRecipients.size() + existingNetworkFailures.size()); - target.addAll(Stream.of(filterRecipients).map(Recipient::resolved).toList()); - target.addAll(Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).toList()); + target.addAll(Stream.of(filterRecipients).map(Recipient::resolved).collect(Collectors.toList())); + target.addAll(Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).collect(Collectors.toList())); } else if (!existingNetworkFailures.isEmpty()) { - target = Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).toList(); + target = Stream.of(existingNetworkFailures).map(NetworkFailure::getRecipientId).distinct().map(Recipient::resolved).collect(Collectors.toList()); } else { GroupRecipientResult result = getGroupMessageRecipients(groupRecipient.requireGroupId(), messageId); @@ -288,7 +288,7 @@ public final class PushGroupSendJob extends PushSendJob { SignalServiceDataMessage.PollCreate pollCreate = getPollCreate(message); SignalServiceDataMessage.PollTerminate pollTerminate = getPollTerminate(message); SignalServiceDataMessage.PinnedMessage pinnedMessage = getPinnedMessage(message); - List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).toList(); + List attachments = Stream.of(message.getAttachments()).filter(attachment -> !attachment.isSticker()).collect(Collectors.toList()); List attachmentPointers = getAttachmentPointersFor(attachments); boolean isRecipientUpdate = Stream.of(SignalDatabase.groupReceipts().getGroupReceiptInfo(messageId)) .anyMatch(info -> info.getStatus() > GroupReceiptTable.STATUS_UNDELIVERED); @@ -444,17 +444,17 @@ public final class PushGroupSendJob extends PushSendJob { MessageTable database = SignalDatabase.messages(); RecipientAccessList accessList = new RecipientAccessList(target); - List networkFailures = Stream.of(results).filter(SendMessageResult::isNetworkFailure).map(result -> new NetworkFailure(accessList.requireIdByAddress(result.getAddress()))).toList(); + List networkFailures = Stream.of(results).filter(SendMessageResult::isNetworkFailure).map(result -> new NetworkFailure(accessList.requireIdByAddress(result.getAddress()))).collect(Collectors.toList()); List identityMismatches = Stream.of(results).filter(result -> result.getIdentityFailure() != null) - .map(result -> new IdentityKeyMismatch(accessList.requireIdByAddress(result.getAddress()), result.getIdentityFailure().getIdentityKey())).toList(); + .map(result -> new IdentityKeyMismatch(accessList.requireIdByAddress(result.getAddress()), result.getIdentityFailure().getIdentityKey())).collect(Collectors.toList()); ProofRequiredException proofRequired = Stream.of(results).filter(r -> r.getProofRequiredFailure() != null).reduce((a,b) -> b).map(SendMessageResult::getProofRequiredFailure).orElse(null); - List successes = Stream.of(results).filter(result -> result.getSuccess() != null).toList(); - List> successUnidentifiedStatus = Stream.of(successes).map(result -> new Pair<>(accessList.requireIdByAddress(result.getAddress()), result.getSuccess().isUnidentified())).toList(); + List successes = Stream.of(results).filter(result -> result.getSuccess() != null).collect(Collectors.toList()); + List> successUnidentifiedStatus = Stream.of(successes).map(result -> new Pair<>(accessList.requireIdByAddress(result.getAddress()), result.getSuccess().isUnidentified())).collect(Collectors.toList()); Set successIds = Stream.of(successUnidentifiedStatus).map(Pair::getFirst).collect(Collectors.toSet()); Set resolvedNetworkFailures = Stream.of(existingNetworkFailures).filter(failure -> successIds.contains(failure.getRecipientId())).collect(Collectors.toSet()); Set resolvedIdentityFailures = Stream.of(existingIdentityMismatches).filter(failure -> successIds.contains(failure.getRecipientId())).collect(Collectors.toSet()); - List unregisteredRecipients = Stream.of(results).filter(SendMessageResult::isUnregisteredFailure).map(result -> RecipientId.from(result.getAddress())).toList(); - List invalidPreKeyRecipients = Stream.of(results).filter(SendMessageResult::isInvalidPreKeyFailure).map(result -> RecipientId.from(result.getAddress())).toList(); + List unregisteredRecipients = Stream.of(results).filter(SendMessageResult::isUnregisteredFailure).map(result -> RecipientId.from(result.getAddress())).collect(Collectors.toList()); + List invalidPreKeyRecipients = Stream.of(results).filter(SendMessageResult::isInvalidPreKeyFailure).map(result -> RecipientId.from(result.getAddress())).collect(Collectors.toList()); Set skippedRecipients = new HashSet<>(); skippedRecipients.addAll(skipped); @@ -551,19 +551,17 @@ public final class PushGroupSendJob extends PushSendJob { possible = Stream.of(destinations) .map(GroupReceiptInfo::getRecipientId) .map(Recipient::resolved) - .distinct() - .toList(); + .distinct().collect(Collectors.toList()); } else { Log.w(TAG, "No destinations found for group message " + groupId + " using current group membership"); possible = Stream.of(SignalDatabase.groups() .getGroupMembers(groupId, GroupTable.MemberSet.FULL_MEMBERS_EXCLUDING_SELF)) .map(Recipient::resolve) - .distinct() - .toList(); + .distinct().collect(Collectors.toList()); } List eligible = RecipientUtil.getEligibleForSending(possible); - List skipped = Stream.of(SetUtil.difference(possible, eligible)).map(Recipient::getId).toList(); + List skipped = Stream.of(SetUtil.difference(possible, eligible)).map(Recipient::getId).collect(Collectors.toList()); return new GroupRecipientResult(eligible, skipped); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index 2e7dee07cc..d469c3e8f9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -217,15 +217,13 @@ public abstract class PushSendJob extends SendJob { attachments.addAll(message.getAttachments()); attachments.addAll(Stream.of(message.getLinkPreviews()) - .map(LinkPreview::getThumbnail) - .filter(Optional::isPresent) - .map(Optional::get) - .toList()); + .map(LinkPreview::getThumbnail) + .filter(Optional::isPresent) + .map(Optional::get).collect(com.annimon.stream.Collectors.toList())); attachments.addAll(Stream.of(message.getSharedContacts()) - .map(Contact::getAvatar).filter(Objects::nonNull) - .map(Contact.Avatar::getAttachment).filter(Objects::nonNull) - .toList()); + .map(Contact::getAvatar).filter(Objects::nonNull) + .map(Contact.Avatar::getAttachment).filter(Objects::nonNull).collect(com.annimon.stream.Collectors.toList())); HashSet jobs = new HashSet<>(Stream.of(attachments).map(a -> { final AttachmentId attachmentId = ((DatabaseAttachment) a).attachmentId; @@ -237,8 +235,7 @@ public abstract class PushSendJob extends SendJob { .enqueue(); return attachmentUploadJob.getId(); - }) - .toList()); + }).collect(com.annimon.stream.Collectors.toList())); if (message.getOutgoingQuote() != null && message.getOutgoingQuote().getAttachment() != null) { AttachmentId attachmentId = ((DatabaseAttachment) message.getOutgoingQuote().getAttachment()).attachmentId; @@ -254,7 +251,7 @@ public abstract class PushSendJob extends SendJob { } protected @NonNull List getAttachmentPointersFor(List attachments) { - return Stream.of(attachments).map(this::getAttachmentPointerFor).filter(a -> a != null).toList(); + return Stream.of(attachments).map(this::getAttachmentPointerFor).filter(a -> a != null).collect(com.annimon.stream.Collectors.toList()); } protected @Nullable SignalServiceAttachment getAttachmentPointerFor(Attachment attachment) { @@ -434,13 +431,12 @@ public abstract class PushSendJob extends SendJob { return Stream.of(mediaMessage.getLinkPreviews()).map(lp -> { SignalServiceAttachment attachment = lp.getThumbnail().isPresent() ? getAttachmentPointerFor(lp.getThumbnail().get()) : null; return new SignalServicePreview(lp.getUrl(), lp.getTitle(), lp.getDescription(), lp.getDate(), Optional.ofNullable(attachment)); - }).toList(); + }).collect(com.annimon.stream.Collectors.toList()); } List getMentionsFor(@NonNull List mentions) { return Stream.of(mentions) - .map(m -> new SignalServiceDataMessage.Mention(Recipient.resolved(m.getRecipientId()).requireAci(), m.getStart(), m.getLength())) - .toList(); + .map(m -> new SignalServiceDataMessage.Mention(Recipient.resolved(m.getRecipientId()).requireAci(), m.getStart(), m.getLength())).collect(com.annimon.stream.Collectors.toList()); } @Nullable SignalServiceDataMessage.GiftBadge getGiftBadgeFor(@NonNull OutgoingMessage message) throws UndeliverableMessageException { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java index 63fc5aaf7f..4df5077453 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java @@ -50,8 +50,8 @@ public abstract class SendJob extends BaseJob { List attachments = new LinkedList<>(); attachments.addAll(message.getAttachments()); - attachments.addAll(Stream.of(message.getLinkPreviews()).map(lp -> lp.getThumbnail().orElse(null)).filter(Objects::nonNull).toList()); - attachments.addAll(Stream.of(message.getSharedContacts()).map(Contact::getAvatarAttachment).filter(Objects::nonNull).toList()); + attachments.addAll(Stream.of(message.getLinkPreviews()).map(lp -> lp.getThumbnail().orElse(null)).filter(Objects::nonNull).collect(com.annimon.stream.Collectors.toList())); + attachments.addAll(Stream.of(message.getSharedContacts()).map(Contact::getAvatarAttachment).filter(Objects::nonNull).collect(com.annimon.stream.Collectors.toList())); if (message.getOutgoingQuote() != null && message.getOutgoingQuote().getAttachment() != null) { attachments.add(message.getOutgoingQuote().getAttachment()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt index 19cb5ada98..6366523c13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.kt @@ -331,7 +331,7 @@ class StorageSyncJob private constructor(parameters: Parameters, private var loc processKnownRecords(context, remoteOnly) val unknownInserts: List = remoteOnly.unknown - val unknownDeletes = Stream.of(idDifference.localOnlyIds).filter { obj: StorageId -> obj.isUnknown }.toList() + val unknownDeletes = Stream.of(idDifference.localOnlyIds).filter { obj: StorageId -> obj.isUnknown }.collect(com.annimon.stream.Collectors.toList()) Log.i(TAG, "[Remote Sync] Unknowns :: " + unknownInserts.size + " inserts, " + unknownDeletes.size + " deletes") @@ -377,7 +377,7 @@ class StorageSyncJob private constructor(parameters: Parameters, private var loc val localStorageIds = getAllLocalStorageIds(self) val idDifference = StorageSyncHelper.findIdDifference(remoteManifest.storageIds, localStorageIds) val remoteInserts = buildLocalStorageRecords(context, self, idDifference.localOnlyIds.stream().filter { it: StorageId -> !it.isUnknown }.collect(Collectors.toList())) - val remoteDeletes = Stream.of(idDifference.remoteOnlyIds).map { obj: StorageId -> obj.raw }.toList() + val remoteDeletes = Stream.of(idDifference.remoteOnlyIds).map { obj: StorageId -> obj.raw }.collect(com.annimon.stream.Collectors.toList()) Log.i(TAG, "ID Difference :: $idDifference") diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java index 171800cf76..bfadaa5ea1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/TypingSendJob.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.jobs; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -128,8 +129,7 @@ public class TypingSendJob extends BaseJob { } recipients = RecipientUtil.getEligibleForSending(Stream.of(recipients) - .map(Recipient::resolve) - .toList()); + .map(Recipient::resolve).collect(Collectors.toList())); SignalServiceTypingMessage typingMessage = new SignalServiceTypingMessage(typing ? Action.STARTED : Action.STOPPED, System.currentTimeMillis(), groupId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewUtil.java b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewUtil.java index 6953467ceb..29f4b44536 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewUtil.java @@ -62,8 +62,7 @@ public final class LinkPreviewUtil { return new Links(Stream.of(spannable.getSpans(0, spannable.length(), URLSpan.class)) .map(span -> new Link(span.getURL(), spannable.getSpanStart(span))) - .filter(link -> LinkUtil.isValidPreviewUrl(link.url)) - .toList()); + .filter(link -> LinkUtil.isValidPreviewUrl(link.url)).collect(Collectors.toList())); } public static @NonNull OpenGraph parseOpenGraphFields(@Nullable String html) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java index a59e4a7b32..5a1822ffe3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.json.JSONException; @@ -404,8 +405,7 @@ public class SubmitDebugLogRepository { List lines = Stream.of(Pattern.compile("\\n").split(content)) .map(s -> new SimpleLogLine(s, LogStyleParser.parseStyle(s), LogStyleParser.parsePlaceholderType(s))) - .map(line -> (LogLine) line) - .toList(); + .map(line -> (LogLine) line).collect(Collectors.toList()); out.addAll(lines); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java index c8b0b35288..bdbf8760f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java @@ -164,8 +164,7 @@ public class MediaRepository { folder.getCount(), folder.getBucketId(), MediaFolder.FolderType.NORMAL)) - .sorted((o1, o2) -> o1.getTitle().toLowerCase().compareTo(o2.getTitle().toLowerCase())) - .toList(); + .sorted((o1, o2) -> o1.getTitle().toLowerCase().compareTo(o2.getTitle().toLowerCase())).collect(com.annimon.stream.Collectors.toList()); Uri allMediaThumbnail = imageFolders.getThumbnailTimestamp() > videoFolders.getThumbnailTimestamp() ? imageFolders.getThumbnail() : videoFolders.getThumbnail(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java index 8935f0c32f..21b9451a5e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java @@ -11,6 +11,7 @@ import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; import androidx.core.app.NotificationManagerCompat; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.bumptech.glide.Glide; @@ -99,8 +100,7 @@ public final class Megaphones { .map(Map.Entry::getKey) .map(records::get) .map(record -> Megaphones.forRecord(context, record)) - .filter(Objects::nonNull) - .toList(); + .filter(Objects::nonNull).collect(Collectors.toList()); if (megaphones.size() > 0) { return megaphones.get(0); diff --git a/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerAdditionMigrationJob.java b/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerAdditionMigrationJob.java index f00eb709d5..2fd46e7c4f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerAdditionMigrationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/migrations/StickerAdditionMigrationJob.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.migrations; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -75,7 +76,7 @@ public class StickerAdditionMigrationJob extends MigrationJob { public @NonNull StickerAdditionMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) { JsonJobData data = JsonJobData.deserialize(serializedData); String[] raw = data.getStringArray(KEY_PACKS); - List packs = Stream.of(raw).map(BlessedPacks.Pack::fromJson).toList(); + List packs = Stream.of(raw).map(BlessedPacks.Pack::fromJson).collect(Collectors.toList()); return new StickerAdditionMigrationJob(parameters, packs); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/MessageGroupContext.java b/app/src/main/java/org/thoughtcrime/securesms/mms/MessageGroupContext.java index 4de6b2ca7c..6eba71dd69 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/MessageGroupContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/MessageGroupContext.java @@ -3,8 +3,6 @@ package org.thoughtcrime.securesms.mms; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.annimon.stream.Stream; - import org.signal.libsignal.zkgroup.InvalidInputException; import org.signal.libsignal.zkgroup.groups.GroupMasterKey; import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup; @@ -29,6 +27,7 @@ import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * Represents either a GroupV1 or GroupV2 encoded context. @@ -131,13 +130,13 @@ public final class MessageGroupContext { public @NonNull List getMembersListExcludingSelf() { RecipientId selfId = Recipient.self().getId(); - return Stream.of(groupContext.members) + return groupContext.members.stream() .filter(m -> SignalE164Util.isPotentialE164(m.e164)) .map(m -> m.e164) .filter(Objects::nonNull) .map(RecipientId::fromE164) .filter(other -> !selfId.equals(other)) - .toList(); + .collect(Collectors.toList()); } } @@ -173,7 +172,7 @@ public final class MessageGroupContext { DecryptedGroup groupState = decryptedGroupV2Context.groupState; DecryptedGroupChange groupChange = getChange(); - return java.util.stream.Stream.of(DecryptedGroupUtil.toAciList(groupState.members), + return Stream.of(DecryptedGroupUtil.toAciList(groupState.members), DecryptedGroupUtil.pendingToServiceIdList(groupState.pendingMembers), DecryptedGroupUtil.removedMembersServiceIdList(groupChange), DecryptedGroupUtil.removedPendingMembersServiceIdList(groupChange), diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java index 4ee65c278f..d22b753206 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java @@ -19,6 +19,7 @@ package org.thoughtcrime.securesms.mms; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.attachments.Attachment; @@ -110,7 +111,7 @@ public class SlideDeck { } public @NonNull List getThumbnailSlides() { - return Stream.of(slides).filter(Slide::hasImage).toList(); + return Stream.of(slides).filter(Slide::hasImage).collect(Collectors.toList()); } public @Nullable AudioSlide getAudioSlide() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/ChunkedDataFetcher.java b/app/src/main/java/org/thoughtcrime/securesms/net/ChunkedDataFetcher.java index d509d91afa..7b6ac354d9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/net/ChunkedDataFetcher.java +++ b/app/src/main/java/org/thoughtcrime/securesms/net/ChunkedDataFetcher.java @@ -4,6 +4,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.bumptech.glide.util.ContentLengthInputStream; @@ -141,8 +142,7 @@ public class ChunkedDataFetcher { 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(); + b.ignoreFirst)).collect(Collectors.toList()); } else { requestPattern = getRequestPattern(contentLength); } @@ -153,7 +153,7 @@ public class ChunkedDataFetcher { } SignalExecutors.UNBOUNDED.execute(() -> { - List controllers = Stream.of(requestPattern).map(range -> makeChunkRequest(client, url, range)).toList(); + List controllers = Stream.of(requestPattern).map(range -> makeChunkRequest(client, url, range)).collect(Collectors.toList()); List streams = new ArrayList<>(controllers.size() + (firstChunk.isPresent() ? 1 : 0)); if (firstChunk.isPresent()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/CustomDns.java b/app/src/main/java/org/thoughtcrime/securesms/net/CustomDns.java index 2882f26de1..036952b690 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/net/CustomDns.java +++ b/app/src/main/java/org/thoughtcrime/securesms/net/CustomDns.java @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.net; import androidx.annotation.NonNull; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -44,8 +45,7 @@ public class CustomDns implements Dns { List ipv4Addresses = Stream.of(records) .filter(r -> r.getType() == Type.A) .map(r -> (ARecord) r) - .map(ARecord::getAddress) - .toList(); + .map(ARecord::getAddress).collect(Collectors.toList()); if (ipv4Addresses.size() > 0) { return ipv4Addresses; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java index 466bad15f1..e3946ca715 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java @@ -29,6 +29,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import kotlin.Pair; + public class MarkReadReceiver extends BroadcastReceiver { private static final String TAG = Log.tag(MarkReadReceiver.class); @@ -75,12 +77,10 @@ public class MarkReadReceiver extends BroadcastReceiver { if (markedReadMessages.isEmpty()) return; List syncMessageIds = Stream.of(markedReadMessages) - .map(MarkedMessageInfo::getSyncMessageId) - .toList(); + .map(MarkedMessageInfo::getSyncMessageId).collect(Collectors.toList()); List expirationInfo = Stream.of(markedReadMessages) .map(MarkedMessageInfo::getExpirationInfo) - .filter(info -> info.getExpiresIn() > 0 && info.getExpireStarted() <= 0) - .toList(); + .filter(info -> info.getExpiresIn() > 0 && info.getExpireStarted() <= 0).collect(Collectors.toList()); scheduleDeletion(expirationInfo); @@ -121,10 +121,10 @@ public class MarkReadReceiver extends BroadcastReceiver { private static void scheduleDeletion(@NonNull List expirationInfo) { if (expirationInfo.size() > 0) { long now = System.currentTimeMillis(); - SignalDatabase.messages().markExpireStarted(Stream.of(expirationInfo).map(info -> new kotlin.Pair<>(info.getId(), now)).toList()); + SignalDatabase.messages().markExpireStarted(Stream.of(expirationInfo).map(info -> new Pair<>(info.getId(), now)).collect(Collectors.toList())); AppDependencies.getExpiringMessageManager() - .scheduleDeletion(Stream.of(expirationInfo).map(info -> info.copy(info.getId(), info.getExpiresIn(), now, info.isMms())).toList()); + .scheduleDeletion(Stream.of(expirationInfo).map(info -> info.copy(info.getId(), info.getExpiresIn(), now, info.isMms())).collect(Collectors.toList())); } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java index ef38b7f4ea..b981ff7d8a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeViewModel.java @@ -7,6 +7,7 @@ import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -197,8 +198,7 @@ public class PaymentsHomeViewModel extends ViewModel { { List paymentItems = Stream.of(payments) .limit(MAX_PAYMENT_ITEMS) - .map(PaymentItem::fromPayment) - .toList(); + .map(PaymentItem::fromPayment).collect(Collectors.toList()); return state.updatePayments(paymentItems, payments.size()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java index 69451d4de5..8de5cbd84f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsRepository.java @@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; import androidx.lifecycle.LiveData; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -58,8 +59,7 @@ public class PaymentsRepository { private void updateDatabaseWithNewBlockInformation(@NonNull List reconcileOutput) { List blockOverridePayments = Stream.of(reconcileOutput) .filter(x -> x instanceof LedgerReconcile.BlockOverridePayment) - .map(x -> (LedgerReconcile.BlockOverridePayment)x) - .toList(); + .map(x -> (LedgerReconcile.BlockOverridePayment)x).collect(Collectors.toList()); if (blockOverridePayments.isEmpty()) { return; @@ -103,7 +103,6 @@ public class PaymentsRepository { @NonNull Direction direction) { return Stream.of(payments) - .filter(p -> p.getDirection() == direction) - .toList(); + .filter(p -> p.getDirection() == direction).collect(Collectors.toList()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java index bf99190f16..7d963a58f8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyViewModel.java @@ -31,7 +31,6 @@ import java.util.Currency; import java.util.List; import java.util.Locale; import java.util.Objects; - import kotlin.Pair; import static java.util.Collections.emptyList; @@ -131,7 +130,7 @@ public final class SetCurrencyViewModel extends ViewModel { private static final List DEFAULT_CURRENCIES = Stream.of(BuildConfig.DEFAULT_CURRENCIES.split(",")) .map(CurrencyUtil::getCurrencyByCurrencyCode) .filter(Objects::nonNull) - .toList(); + .collect(com.annimon.stream.Collectors.toList()); private final Currency currentCurrency; private final CurrencyExchange currencyExchange; diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcile.java b/app/src/main/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcile.java index 4439387edc..5585529dc0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcile.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcile.java @@ -52,7 +52,7 @@ public final class LedgerReconcile { private static @NonNull List reconcile(@NonNull Collection allLocalPaymentTransactions, @NonNull List allTxOuts) { - List nonFailedLocalPayments = Stream.of(allLocalPaymentTransactions).filter(i -> i.getState() != State.FAILED).toList(); + List nonFailedLocalPayments = Stream.of(allLocalPaymentTransactions).filter(i -> i.getState() != State.FAILED).collect(Collectors.toList()); Set allKnownPublicKeys = new HashSet<>(nonFailedLocalPayments.size()); Set allKnownKeyImages = new HashSet<>(nonFailedLocalPayments.size()); @@ -80,7 +80,7 @@ public final class LedgerReconcile { unknownTxOutsSpent.removeAll(knownTxosByKeyImage); if (unknownTxOutsReceived.isEmpty() && unknownTxOutsSpent.isEmpty()) { - return Stream.of(allLocalPaymentTransactions).map(t -> (Payment) t).toList(); + return Stream.of(allLocalPaymentTransactions).map(t -> (Payment) t).collect(Collectors.toList()); } List detailedTransactions = reconstructAllTransactions(unknownTxOutsReceived, unknownTxOutsSpent); @@ -224,14 +224,12 @@ public final class LedgerReconcile { return Stream.of(transactionReconstruction.getAllTransactions()) .map(t -> new DetailedTransaction(blockDetail, t)); }) - .sorted(DetailedTransaction.DESCENDING) - .toList(); + .sorted(DetailedTransaction.DESCENDING).collect(Collectors.toList()); } private static @NonNull List toMobileCoinList(@NonNull List spent) { return Stream.of(spent) - .map(MobileCoinLedgerWrapper.OwnedTxo::getValue) - .toList(); + .map(MobileCoinLedgerWrapper.OwnedTxo::getValue).collect(Collectors.toList()); } public static class BlockOverridePayment extends PaymentDecorator { diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardViewModel.java index a203d1867c..0c877f0c17 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardViewModel.java @@ -10,6 +10,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.groups.GroupId; @@ -92,8 +93,7 @@ public class ReviewCardViewModel extends ViewModel { repository.loadGroupsInCommonCount(r) - (isGroupThread ? 1 : 0), getCardType(r), getPrimaryAction(r, isSelfGroupAdmin), - getSecondaryAction(r))) - .toList(); + getSecondaryAction(r))).collect(Collectors.toList()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsViewModel.java index 9053dffb3b..a93f3d29f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsViewModel.java @@ -36,8 +36,7 @@ public class ReactionsViewModel extends ViewModel { .sorted(this::compareReactions) .map(entry -> new EmojiCount(entry.getKey(), getCountDisplayEmoji(entry.getValue()), - entry.getValue())) - .toList(); + entry.getValue())).collect(Collectors.toList()); emojiCounts.add(0, EmojiCount.all(reactionList)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java index 3d7feb1065..b0b429ccdf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java @@ -4,6 +4,7 @@ import android.content.Context; import androidx.annotation.NonNull; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.ThreadUtil; @@ -39,17 +40,15 @@ final class ReactWithAnyEmojiRepository { this.emojiPages = new LinkedList<>(); emojiPages.addAll(Stream.of(EmojiSource.getLatest().getDisplayPages()) - .filter(p -> p.getIconAttr() != EmojiCategory.EMOTICONS.getIcon()) - .map(page -> new ReactWithAnyEmojiPage(Collections.singletonList(new ReactWithAnyEmojiPageBlock(EmojiCategory.getCategoryLabel(page.getIconAttr()), page)))) - .toList()); + .filter(p -> p.getIconAttr() != EmojiCategory.EMOTICONS.getIcon()) + .map(page -> new ReactWithAnyEmojiPage(Collections.singletonList(new ReactWithAnyEmojiPageBlock(EmojiCategory.getCategoryLabel(page.getIconAttr()), page)))).collect(Collectors.toList())); } List getEmojiPageModels(@NonNull List thisMessagesReactions) { List pages = new LinkedList<>(); List thisMessage = Stream.of(thisMessagesReactions) .map(ReactionDetails::getDisplayEmoji) - .distinct() - .toList(); + .distinct().collect(Collectors.toList()); if (thisMessage.isEmpty()) { pages.add(new ReactWithAnyEmojiPage(Collections.singletonList(new ReactWithAnyEmojiPageBlock(R.string.ReactWithAnyEmojiBottomSheetDialogFragment__recently_used, recentEmojiPageModel)))); diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java index 178e28f415..bed96fe538 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java @@ -5,6 +5,7 @@ import android.net.Uri; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.R; @@ -42,7 +43,7 @@ class ThisMessageEmojiPageModel implements EmojiPageModel { @Override public @NonNull List getDisplayEmoji() { - return Stream.of(getEmoji()).map(Emoji::new).toList(); + return Stream.of(getEmoji()).map(Emoji::new).collect(Collectors.toList()); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java index 26370418c5..85147f238b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java @@ -108,8 +108,7 @@ public class RecipientUtil { { List recipientsWithoutUuids = Stream.of(recipients) .map(Recipient::resolve) - .filter(recipient -> !recipient.getHasServiceId()) - .toList(); + .filter(recipient -> !recipient.getHasServiceId()).collect(com.annimon.stream.Collectors.toList()); if (recipientsWithoutUuids.size() > 0) { ContactDiscovery.refresh(context, recipientsWithoutUuids, false); @@ -132,8 +131,7 @@ public class RecipientUtil { public static List getEligibleForSending(@NonNull List recipients) { return Stream.of(recipients) .filter(r -> r.getRegistered() != RegisteredState.NOT_REGISTERED) - .filter(r -> !r.isBlocked()) - .toList(); + .filter(r -> !r.isBlocked()).collect(com.annimon.stream.Collectors.toList()); } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java index 68079ba830..bc48b4d1de 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupActionProcessor.java @@ -4,6 +4,7 @@ import android.util.LongSparseArray; import androidx.annotation.NonNull; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -193,8 +194,7 @@ public class GroupActionProcessor extends DeviceAwareActionProcessor { GroupCall groupCall = currentState.getCallInfoState().requireGroupCall(); List members = Stream.of(GroupManager.getUuidCipherTexts(context, group.requireGroupId().requireV2())) - .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())) - .toList(); + .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())).collect(Collectors.toList()); try { groupCall.setGroupMembers(new ArrayList<>(members)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupConnectedActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupConnectedActionProcessor.java index 9296b2d354..a175eb96ae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupConnectedActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupConnectedActionProcessor.java @@ -6,6 +6,7 @@ import android.util.LongSparseArray; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -255,8 +256,7 @@ public class GroupConnectedActionProcessor extends GroupActionProcessor { List members = Stream.of(currentState.getCallInfoState().getRemoteCallParticipants()) .filter(p -> p.getRecipient().getHasServiceId()) - .map(p -> p.getRecipient().requireServiceId().getRawUuid()) - .toList(); + .map(p -> p.getRecipient().requireServiceId().getRawUuid()).collect(Collectors.toList()); webRtcInteractor.updateGroupCallUpdateMessage(currentState.getCallInfoState().getCallRecipient().getId(), eraId, members, false); currentState = currentState.builder() diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java index 3606614cf7..96b8ab6c85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/GroupPreJoinActionProcessor.java @@ -5,6 +5,7 @@ import android.os.ResultReceiver; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -144,8 +145,7 @@ public class GroupPreJoinActionProcessor extends GroupActionProcessor { } List callParticipants = Stream.of(peekInfo.getJoinedMembers()) - .map(uuid -> Recipient.externalPush(ACI.from(uuid))) - .toList(); + .map(uuid -> Recipient.externalPush(ACI.from(uuid))).collect(Collectors.toList()); WebRtcServiceStateBuilder.CallInfoStateBuilder builder = currentState.builder() .changeCallInfoState() diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 7a48a84a07..6cf5a02e27 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -482,8 +482,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. ExternalGroupCredential credential = GroupManager.getExternalGroupCredential(context, groupId); List members = Stream.of(GroupManager.getUuidCipherTexts(context, groupId)) - .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())) - .toList(); + .map(entry -> new GroupCall.GroupMemberInfo(entry.getKey(), entry.getValue().serialize())).collect(com.annimon.stream.Collectors.toList()); callManager.peekGroupCall(SignalStore.internal().getGroupCallingServer(), credential.token.getBytes(Charsets.UTF_8), members, peekInfo -> { Long threadId = SignalDatabase.threads().getThreadIdFor(group.getId()); @@ -961,8 +960,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. List> headerPairs; if (headers != null) { headerPairs = Stream.of(headers) - .map(header -> new Pair<>(header.getName(), header.getValue())) - .toList(); + .map(header -> new Pair<>(header.getName(), header.getValue())).collect(com.annimon.stream.Collectors.toList()); } else { headerPairs = Collections.emptyList(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java index b4b2244445..c726d66b6a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java @@ -6,6 +6,7 @@ import android.os.ResultReceiver; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.logging.Log; @@ -534,8 +535,7 @@ public abstract class WebRtcActionProcessor { Log.i(tag, "handleSendIceCandidates(): id: " + callMetadata.getCallId().format(callMetadata.getRemoteDevice())); List iceUpdateMessages = Stream.of(iceCandidates) - .map(c -> new IceUpdateMessage(callMetadata.getCallId().longValue(), c)) - .toList(); + .map(c -> new IceUpdateMessage(callMetadata.getCallId().longValue(), c)).collect(Collectors.toList()); Integer destinationDeviceId = broadcast ? null : callMetadata.getRemoteDevice(); SignalServiceCallMessage callMessage = SignalServiceCallMessage.forIceUpdates(iceUpdateMessages, destinationDeviceId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java index 793a86b7e6..9088ed4622 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareArgs.java @@ -248,7 +248,7 @@ public final class MultiShareArgs implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeTypedList(Stream.of(contactSearchKeys).map(ContactSearchKey::requireRecipientSearchKey).toList()); + dest.writeTypedList(Stream.of(contactSearchKeys).map(ContactSearchKey::requireRecipientSearchKey).collect(com.annimon.stream.Collectors.toList())); dest.writeTypedList(media); dest.writeString(draftText); dest.writeParcelable(stickerLocator, flags); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index 7d61f222ca..a362226d78 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -10,8 +10,6 @@ import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; import androidx.core.util.Consumer; -import com.annimon.stream.Stream; - import org.signal.core.util.BreakIteratorCompat; import org.signal.core.util.ThreadUtil; import org.signal.core.util.concurrent.SimpleTask; @@ -62,6 +60,7 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import java.util.stream.Stream; import okio.Utf8; @@ -245,11 +244,11 @@ public final class MultiShareSender { if (slide instanceof VideoSlide) { return expandToClips(context, (VideoSlide) slide).stream(); } else if (slide instanceof ImageSlide) { - return java.util.stream.Stream.of(ensureDefaultQuality(context, (ImageSlide) slide)); + return Stream.of(ensureDefaultQuality(context, (ImageSlide) slide)); } else if (slide instanceof StickerSlide) { - return java.util.stream.Stream.empty(); + return Stream.empty(); } else { - return java.util.stream.Stream.of(slide); + return Stream.of(slide); } }) .filter(it -> MediaUtil.isStorySupportedType(it.getContentType())) @@ -489,11 +488,11 @@ public final class MultiShareSender { } public boolean containsFailures() { - return Stream.of(results).anyMatch(result -> result.type != MultiShareSendResult.Type.SUCCESS); + return results.stream().anyMatch(result -> result.type != MultiShareSendResult.Type.SUCCESS); } public boolean containsOnlyFailures() { - return Stream.of(results).allMatch(result -> result.type != MultiShareSendResult.Type.SUCCESS); + return results.stream().allMatch(result -> result.type != MultiShareSendResult.Type.SUCCESS); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/interstitial/ShareInterstitialRepository.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/interstitial/ShareInterstitialRepository.java index 56e4baa925..1aaaac6dfb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/interstitial/ShareInterstitialRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/interstitial/ShareInterstitialRepository.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; import androidx.core.util.Consumer; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.concurrent.SignalExecutors; @@ -23,7 +24,6 @@ class ShareInterstitialRepository { private List resolveRecipients(@NonNull Set recipientSearchKeys) { return Stream.of(recipientSearchKeys) .map(ContactSearchKey.RecipientSearchKey::getRecipientId) - .map(Recipient::resolved) - .toList(); + .map(Recipient::resolved).collect(Collectors.toList()); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java index e7aed39478..26308e951e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java @@ -297,8 +297,8 @@ public class MessageSender { Recipient recipient = message.getThreadRecipient(); long allocatedThreadId = threadTable.getOrCreateValidThreadId(message.getThreadRecipient(), threadId); - List attachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList(); - List jobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList(); + List attachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).collect(com.annimon.stream.Collectors.toList()); + List jobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).collect(com.annimon.stream.Collectors.toList()); if (!attachmentDatabase.hasAttachments(attachmentIds)) { Log.w(TAG, "Attachments not found in database for " + message.getThreadRecipient().getId() + ", thread: " + threadId + ", pre-uploads: " + preUploadResults); @@ -337,7 +337,7 @@ public class MessageSender { @NonNull Collection preUploadResults, boolean overwritePreUploadMessageIds) { - Log.i(TAG, "Sending media broadcast (overwrite: " + overwritePreUploadMessageIds + ") to " + Stream.of(messages).map(m -> m.getThreadRecipient().getId()).toList()); + Log.i(TAG, "Sending media broadcast (overwrite: " + overwritePreUploadMessageIds + ") to " + Stream.of(messages).map(m -> m.getThreadRecipient().getId()).collect(com.annimon.stream.Collectors.toList())); Preconditions.checkArgument(messages.size() > 0, "No messages!"); Preconditions.checkArgument(Stream.of(messages).allMatch(m -> m.getAttachments().isEmpty()), "Messages can't have attachments! They should be pre-uploaded."); @@ -345,8 +345,8 @@ public class MessageSender { AttachmentTable attachmentDatabase = SignalDatabase.attachments(); MessageTable mmsDatabase = SignalDatabase.messages(); ThreadTable threadTable = SignalDatabase.threads(); - List preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList(); - List preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList(); + List preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).collect(com.annimon.stream.Collectors.toList()); + List preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).collect(com.annimon.stream.Collectors.toList()); List messageIds = new ArrayList<>(messages.size()); List messageDependsOnIds = new ArrayList<>(preUploadJobIds); OutgoingMessage primaryMessage = messages.get(0); @@ -371,8 +371,7 @@ public class MessageSender { } List preUploadAttachments = Stream.of(preUploadAttachmentIds) - .map(attachmentDatabase::getAttachment) - .toList(); + .map(attachmentDatabase::getAttachment).collect(com.annimon.stream.Collectors.toList()); if (messages.size() > 0) { List secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewRepository.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewRepository.java index 3a983b560f..f313c8d7db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewRepository.java @@ -6,6 +6,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.concurrent.SignalExecutors; @@ -88,8 +89,7 @@ public final class StickerPackPreviewRepository { remoteManifest.getAuthor(), toOptionalSticker(packId, packKey, remoteManifest.getCover()), Stream.of(remoteManifest.getStickers()) - .map(s -> toSticker(packId, packKey, s)) - .toList()); + .map(s -> toSticker(packId, packKey, s)).collect(Collectors.toList())); return Optional.of(new StickerManifestResult(localManifest, false)); } catch (IOException | InvalidMessageException e) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncValidations.java b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncValidations.java index d1bb025afa..29193122a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncValidations.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncValidations.java @@ -117,7 +117,7 @@ public final class StorageSyncValidations { } Set allSet = new HashSet<>(manifest.storageIds); - Set insertSet = new HashSet<>(Stream.of(inserts).map(SignalStorageRecord::getId).toList()); + Set insertSet = new HashSet<>(Stream.of(inserts).map(SignalStorageRecord::getId).collect(Collectors.toList())); Set rawIdSet = Stream.of(allSet).map(id -> ByteBuffer.wrap(id.getRaw())).collect(Collectors.toSet()); if (allSet.size() != manifest.storageIds.size()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java index a55dfc1268..519837b3e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java @@ -94,7 +94,7 @@ public final class ConversationUtil { public static void clearAllShortcuts(@NonNull Context context) { List shortcutInfos = ShortcutManagerCompat.getDynamicShortcuts(context); - ShortcutManagerCompat.removeLongLivedShortcuts(context, Stream.of(shortcutInfos).map(ShortcutInfoCompat::getId).toList()); + ShortcutManagerCompat.removeLongLivedShortcuts(context, Stream.of(shortcutInfos).map(ShortcutInfoCompat::getId).collect(com.annimon.stream.Collectors.toList())); } /** @@ -102,7 +102,7 @@ public final class ConversationUtil { */ public static void clearShortcuts(@NonNull Context context, @NonNull Collection recipientIds) { SignalExecutors.BOUNDED.execute(() -> { - ShortcutManagerCompat.removeLongLivedShortcuts(context, Stream.of(recipientIds).filter(Objects::nonNull).map(ConversationUtil::getShortcutId).toList()); + ShortcutManagerCompat.removeLongLivedShortcuts(context, Stream.of(recipientIds).filter(Objects::nonNull).map(ConversationUtil::getShortcutId).collect(com.annimon.stream.Collectors.toList())); }); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SearchUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/SearchUtil.java index 33b0f29f0f..7cfe60ef47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SearchUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SearchUtil.java @@ -9,6 +9,7 @@ import android.text.style.CharacterStyle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.signal.core.util.StringUtil; @@ -90,8 +91,7 @@ public class SearchUtil { String normalizedText = text.toLowerCase(locale); String normalizedHighlight = highlight.toLowerCase(locale); List highlightTokens = Stream.of(normalizedHighlight.split("\\s")) - .filter(s -> !s.trim().isEmpty()) - .toList(); + .filter(s -> !s.trim().isEmpty()).collect(Collectors.toList()); int[] indexMap = buildIndexMap(text, normalizedText, locale); List> ranges = new LinkedList<>(); @@ -152,8 +152,7 @@ public class SearchUtil { String normalizedText = text.toLowerCase(locale); String normalizedHighlight = highlight.toLowerCase(locale); List highlightTokens = Stream.of(normalizedHighlight.split("\\s")) - .filter(s -> !s.trim().isEmpty()) - .toList(); + .filter(s -> !s.trim().isEmpty()).collect(Collectors.toList()); int[] indexMap = buildIndexMap(text, normalizedText, locale); diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/adapter/mapping/MappingModelList.java b/app/src/main/java/org/thoughtcrime/securesms/util/adapter/mapping/MappingModelList.java index 39d6522a50..1233c60db6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/adapter/mapping/MappingModelList.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/adapter/mapping/MappingModelList.java @@ -28,15 +28,15 @@ public class MappingModelList extends ArrayList> { return list; } - public static @NonNull java.util.stream.Collector, MappingModelList, MappingModelList> collect() { - return new java.util.stream.Collector, MappingModelList, MappingModelList>() { + public static @NonNull Collector, MappingModelList, MappingModelList> collect() { + return new Collector, MappingModelList, MappingModelList>() { @Override - public java.util.function.Supplier supplier() { + public Supplier supplier() { return MappingModelList::new; } @Override - public java.util.function.BiConsumer> accumulator() { + public BiConsumer> accumulator() { return MappingModelList::add; } @@ -49,8 +49,8 @@ public class MappingModelList extends ArrayList> { } @Override - public java.util.function.Function finisher() { - return java.util.function.Function.identity(); + public Function finisher() { + return Function.identity(); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java index 196d5ad404..484d7b68bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperPreviewActivity.java @@ -12,6 +12,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.viewpager2.widget.ViewPager2; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.PassphraseRequiredActivity; @@ -82,8 +83,7 @@ public class ChatWallpaperPreviewActivity extends PassphraseRequiredActivity { adapter.submitList(Collections.singletonList(new ChatWallpaperSelectionMappingModel(selected))); repository.getAllWallpaper(wallpapers -> adapter.submitList(Stream.of(wallpapers) .map(wallpaper -> ChatWallpaperFactory.updateWithDimming(wallpaper, dim ? ChatWallpaper.FIXED_DIM_LEVEL_FOR_DARK_THEME : 0f)) - .>map(ChatWallpaperSelectionMappingModel::new) - .toList())); + .>map(ChatWallpaperSelectionMappingModel::new).collect(Collectors.toList()))); submit.setOnClickListener(unused -> { ChatWallpaperSelectionMappingModel model = (ChatWallpaperSelectionMappingModel) adapter.getCurrentList().get(viewPager.getCurrentItem()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperViewModel.java index 77e2daa694..a3fd240f6f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperViewModel.java @@ -8,6 +8,7 @@ import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.conversation.colors.AvatarColor; @@ -141,7 +142,7 @@ public class ChatWallpaperViewModel extends ViewModel { return LiveDataUtil.combineLatest(builtins, dimInDarkTheme, (wallpapers, dimInDarkMode) -> Stream.of(wallpapers) .map(paper -> ChatWallpaperFactory.updateWithDimming(paper, dimInDarkMode ? ChatWallpaper.FIXED_DIM_LEVEL_FOR_DARK_THEME : 0f)) - .>map(ChatWallpaperSelectionMappingModel::new).toList() + .>map(ChatWallpaperSelectionMappingModel::new).collect(Collectors.toList()) ); } diff --git a/app/src/test/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcileTest.java b/app/src/test/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcileTest.java index 151fcfb5b7..f5d3e2f86d 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcileTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/payments/reconciliation/LedgerReconcileTest.java @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.payments.reconciliation; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import org.junit.BeforeClass; @@ -168,7 +169,7 @@ public final class LedgerReconcileTest { List payments = reconcile(localPayments, new MobileCoinLedgerWrapper(ledger)); - assertEquals(Arrays.asList(mob(-1), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).toList()); + assertEquals(Arrays.asList(mob(-1), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).collect(Collectors.toList())); assertEquals("received", payments.get(1).getNote()); } @@ -181,7 +182,7 @@ public final class LedgerReconcileTest { List payments = reconcile(localPayments, new MobileCoinLedgerWrapper(ledger)); - assertEquals(Arrays.asList(mob(1.5), mob(-2.5), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).toList()); + assertEquals(Arrays.asList(mob(1.5), mob(-2.5), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).collect(Collectors.toList())); assertEquals("received", payments.get(2).getNote()); } @@ -194,7 +195,7 @@ public final class LedgerReconcileTest { List payments = reconcile(localPayments, new MobileCoinLedgerWrapper(ledger)); - assertEquals(Arrays.asList(mob(2.5), mob(1.5), mob(-2.5), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).toList()); + assertEquals(Arrays.asList(mob(2.5), mob(1.5), mob(-2.5), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).collect(Collectors.toList())); assertEquals("received", payments.get(0).getNote()); } @@ -208,7 +209,7 @@ public final class LedgerReconcileTest { List payments = reconcile(localPayments, new MobileCoinLedgerWrapper(ledger)); - assertEquals(Arrays.asList(mob(1.5), mob(-2.5), mob(10), mob(20)), Stream.of(payments).map(Payment::getAmountWithDirection).toList()); + assertEquals(Arrays.asList(mob(1.5), mob(-2.5), mob(10), mob(20)), Stream.of(payments).map(Payment::getAmountWithDirection).collect(Collectors.toList())); } @Test @@ -221,8 +222,8 @@ public final class LedgerReconcileTest { List payments = reconcile(localPayments, new MobileCoinLedgerWrapper(ledger)); - assertEquals(Arrays.asList(20L, 15L, 0L, 10L), Stream.of(payments).map(Payment::getBlockIndex).toList()); - assertEquals(Arrays.asList(mob(-2.5), mob(10), mob(20), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).toList()); + assertEquals(Arrays.asList(20L, 15L, 0L, 10L), Stream.of(payments).map(Payment::getBlockIndex).collect(Collectors.toList())); + assertEquals(Arrays.asList(mob(-2.5), mob(10), mob(20), mob(2.5)), Stream.of(payments).map(Payment::getAmountWithDirection).collect(Collectors.toList())); } private static @NonNull List reconcile(@NonNull Collection localPaymentTransactions, diff --git a/app/src/test/java/org/thoughtcrime/securesms/testutil/TestHelpers.java b/app/src/test/java/org/thoughtcrime/securesms/testutil/TestHelpers.java index 429c1163a2..821413016d 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/testutil/TestHelpers.java +++ b/app/src/test/java/org/thoughtcrime/securesms/testutil/TestHelpers.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.testutil; +import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.google.common.collect.Sets; @@ -50,8 +51,8 @@ public final class TestHelpers { public static void assertByteListEquals(List a, List b) { assertEquals(a.size(), b.size()); - List aBuffer = Stream.of(a).map(ByteBuffer::wrap).toList(); - List bBuffer = Stream.of(b).map(ByteBuffer::wrap).toList(); + List aBuffer = Stream.of(a).map(ByteBuffer::wrap).collect(Collectors.toList()); + List bBuffer = Stream.of(b).map(ByteBuffer::wrap).collect(Collectors.toList()); assertTrue(aBuffer.containsAll(bBuffer)); }