Only copy distinct messages.

Fixes #11696
fork-5.53.8
Alan Evans 2021-10-18 23:12:38 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 41585699d2
commit 07a6942ea8
2 zmienionych plików z 15 dodań i 21 usunięć

Wyświetl plik

@ -19,8 +19,6 @@ package org.thoughtcrime.securesms.conversation;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
@ -167,7 +165,6 @@ import org.thoughtcrime.securesms.wallpaper.ChatWallpaper;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@ -871,24 +868,21 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
}
private void handleCopyMessage(final Set<MultiselectPart> multiselectParts) {
List<MultiselectPart> multiselectPartList = new ArrayList<>(multiselectParts);
Collections.sort(multiselectPartList, (lhs, rhs) -> Long.compare(lhs.getMessageRecord().getDateReceived(), rhs.getMessageRecord().getDateReceived()));
CharSequence bodies = Stream.of(multiselectParts)
.sortBy(m -> m.getMessageRecord().getDateReceived())
.map(MultiselectPart::getConversationMessage)
.distinct()
.map(m -> m.getDisplayBody(requireContext()))
.filterNot(TextUtils::isEmpty)
.collect(SpannableStringBuilder::new, (bodyBuilder, body) -> {
if (bodyBuilder.length() > 0) {
bodyBuilder.append('\n');
}
bodyBuilder.append(body);
});
SpannableStringBuilder bodyBuilder = new SpannableStringBuilder();
ClipboardManager clipboard = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE);
for (MultiselectPart part : multiselectPartList) {
CharSequence body = part.getConversationMessage().getDisplayBody(requireContext());
if (!TextUtils.isEmpty(body)) {
if (bodyBuilder.length() > 0) {
bodyBuilder.append('\n');
}
bodyBuilder.append(body);
}
}
if (!TextUtils.isEmpty(bodyBuilder)) {
clipboard.setPrimaryClip(ClipData.newPlainText(null, bodyBuilder));
if (!TextUtils.isEmpty(bodies)) {
Util.copyToClipboard(requireContext(), bodies);
}
}

Wyświetl plik

@ -483,7 +483,7 @@ public class Util {
return MemoryUnitFormat.formatBytes(sizeBytes);
}
public static void copyToClipboard(@NonNull Context context, @NonNull String text) {
public static void copyToClipboard(@NonNull Context context, @NonNull CharSequence text) {
ServiceUtil.getClipboardManager(context).setPrimaryClip(ClipData.newPlainText("text", text));
}