Hide bubble for jumbomoji.

fork-5.53.8
Cody Henthorne 2022-01-06 13:36:58 -05:00 zatwierdzone przez Alex Hart
rodzic 4e67752850
commit 3922bfacf5
7 zmienionych plików z 63 dodań i 7 usunięć

Wyświetl plik

@ -114,10 +114,9 @@ public class EmojiTextView extends AppCompatTextView {
int emojis = candidates.size();
float scale = 1.0f;
if (emojis <= 8) scale += 0.75f;
if (emojis <= 6) scale += 0.75f;
if (emojis <= 4) scale += 0.75f;
if (emojis <= 2) scale += 0.75f;
if (emojis <= 5) scale += 0.9f;
if (emojis <= 4) scale += 0.9f;
if (emojis <= 2) scale += 0.9f;
isJumbomoji = scale > 1.0f;
super.setTextSize(TypedValue.COMPLEX_UNIT_PX, originalFontSize * scale);

Wyświetl plik

@ -138,12 +138,10 @@ import org.whispersystems.libsignal.util.guava.Optional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* A view that displays an individual conversation item within a conversation
@ -1075,6 +1073,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
ViewUtil.updateLayoutParamsIfNonNull(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
footer.setVisibility(VISIBLE);
} else if (hasNoBubble(messageRecord)) {
bodyBubble.setBackgroundColor(Color.TRANSPARENT);
} else if (hasThumbnail(messageRecord)) {
mediaThumbnailStub.require().setVisibility(View.VISIBLE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);

Wyświetl plik

@ -35,6 +35,8 @@ import org.signal.core.util.logging.Log;
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser;
import org.thoughtcrime.securesms.database.MmsSmsColumns;
import org.thoughtcrime.securesms.database.SmsDatabase;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
@ -42,6 +44,8 @@ import org.thoughtcrime.securesms.database.documents.NetworkFailure;
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context;
import org.thoughtcrime.securesms.database.model.databaseprotos.GroupCallUpdateDetails;
import org.thoughtcrime.securesms.database.model.databaseprotos.ProfileChangeDetails;
import org.thoughtcrime.securesms.emoji.EmojiSource;
import org.thoughtcrime.securesms.emoji.JumboEmoji;
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange;
import org.thoughtcrime.securesms.profiles.ProfileName;
import org.thoughtcrime.securesms.recipients.Recipient;
@ -92,6 +96,8 @@ public abstract class MessageRecord extends DisplayRecord {
private final long notifiedTimestamp;
private final long receiptTimestamp;
protected Boolean isJumboji = null;
MessageRecord(long id, String body, Recipient conversationRecipient,
Recipient individualRecipient, int recipientDeviceId,
long dateSent, long dateReceived, long dateServer, long threadId,
@ -602,6 +608,18 @@ public abstract class MessageRecord extends DisplayRecord {
}
}
public boolean isJumbomoji(Context context) {
if (isJumboji == null) {
if (getBody().length() <= EmojiSource.getLatest().getMaxEmojiLength() * JumboEmoji.MAX_JUMBOJI_COUNT) {
EmojiParser.CandidateList candidates = EmojiProvider.getCandidates(getDisplayBody(context));
isJumboji = candidates != null && candidates.allEmojis && candidates.size() <= JumboEmoji.MAX_JUMBOJI_COUNT;
} else {
isJumboji = false;
}
}
return isJumboji;
}
public static final class InviteAddState {
private final boolean invited;

Wyświetl plik

@ -21,6 +21,8 @@ private val TAG = Log.tag(JumboEmoji::class.java)
*/
object JumboEmoji {
const val MAX_JUMBOJI_COUNT = 5
private val cache: MutableMap<String, Bitmap> = SoftHashMap(16)
private val tasks: MutableMap<String, ListenableFutureTask<Bitmap>> = hashMapOf()
private val versionToFormat: MutableMap<UUID, String?> = hashMapOf()

Wyświetl plik

@ -43,7 +43,7 @@ fun MessageRecord.isBorderless(context: Context): Boolean {
}
fun MessageRecord.hasNoBubble(context: Context): Boolean =
hasSticker() || isBorderless(context)
hasSticker() || isBorderless(context) || (isTextOnly(context) && isJumbomoji(context))
fun MessageRecord.hasOnlyThumbnail(context: Context): Boolean {
return hasThumbnail() &&

Wyświetl plik

@ -138,6 +138,25 @@
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
app:footer_text_color="@color/signal_text_secondary" />
<org.thoughtcrime.securesms.components.ConversationItemFooter
android:id="@+id/conversation_item_sticker_footer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/message_bubble_horizontal_padding"
android:layout_marginTop="2dp"
android:layout_gravity="end"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="@dimen/message_bubble_horizontal_padding"
android:paddingTop="3dp"
android:paddingEnd="@dimen/message_bubble_horizontal_padding"
android:paddingBottom="3dp"
android:visibility="gone"
app:footer_icon_color="@color/signal_icon_tint_secondary"
app:footer_mode="incoming"
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
app:footer_text_color="@color/signal_text_secondary" />
</org.thoughtcrime.securesms.conversation.ConversationItemBodyBubble>
<org.thoughtcrime.securesms.components.AlertView

Wyświetl plik

@ -79,6 +79,24 @@
app:footer_reveal_dot_color="@color/conversation_item_sent_text_secondary_color"
app:footer_text_color="@color/conversation_item_sent_text_secondary_color" />
<org.thoughtcrime.securesms.components.ConversationItemFooter
android:id="@+id/conversation_item_sticker_footer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="2dp"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="@dimen/message_bubble_horizontal_padding"
android:paddingTop="3dp"
android:paddingEnd="@dimen/message_bubble_horizontal_padding"
android:paddingBottom="3dp"
android:visibility="gone"
app:footer_icon_color="@color/signal_icon_tint_secondary"
app:footer_mode="outgoing"
app:footer_reveal_dot_color="@color/signal_icon_tint_secondary"
app:footer_text_color="@color/signal_text_secondary" />
</org.thoughtcrime.securesms.conversation.ConversationItemBodyBubble>
<org.thoughtcrime.securesms.components.AlertView