Skip to content

Commit

Permalink
Update message collapsing criteria
Browse files Browse the repository at this point in the history
  • Loading branch information
lucio-signal committed Jul 27, 2021
1 parent e76808a commit b9081dc
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
Expand Up @@ -1234,7 +1234,7 @@ private void setFooter(@NonNull MessageRecord current, @NonNull Optional<Message
if (sharedContactStub.resolved()) sharedContactStub.get().getFooter().setVisibility(GONE);
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.require().getFooter().setVisibility(GONE);

boolean differentTimestamps = next.isPresent() && !DateUtils.isSameExtendedRelativeTimestamp(context, locale, next.get().getTimestamp(), current.getTimestamp());
boolean differentTimestamps = next.isPresent() && !DateUtils.isSameExtendedRelativeTimestamp(next.get().getTimestamp(), current.getTimestamp());

if (forceFooter(messageRecord) || current.getExpiresIn() > 0 || !current.isSecure() || current.isPending() || current.isPendingInsecureSmsFallback() ||
current.isFailed() || current.isRateLimited() || differentTimestamps || isEndOfMessageCluster(current, next, isGroupThread))
Expand Down Expand Up @@ -1428,10 +1428,10 @@ private boolean isStartOfMessageCluster(@NonNull MessageRecord current, @NonNull
private boolean isEndOfMessageCluster(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> next, boolean isGroupThread) {
if (isGroupThread) {
return !next.isPresent() || next.get().isUpdate() || !DateUtils.isSameDay(current.getTimestamp(), next.get().getTimestamp()) ||
!current.getRecipient().equals(next.get().getRecipient());
!current.getRecipient().equals(next.get().getRecipient()) || !current.getReactions().isEmpty();
} else {
return !next.isPresent() || next.get().isUpdate() || !DateUtils.isSameDay(current.getTimestamp(), next.get().getTimestamp()) ||
current.isOutgoing() != next.get().isOutgoing();
current.isOutgoing() != next.get().isOutgoing() || !current.getReactions().isEmpty();
}
}

Expand Down
11 changes: 6 additions & 5 deletions app/src/main/java/org/thoughtcrime/securesms/util/DateUtils.java
Expand Up @@ -40,9 +40,10 @@
public class DateUtils extends android.text.format.DateUtils {

@SuppressWarnings("unused")
private static final String TAG = Log.tag(DateUtils.class);
private static final ThreadLocal<SimpleDateFormat> DATE_FORMAT = new ThreadLocal<>();
private static final ThreadLocal<SimpleDateFormat> BRIEF_EXACT_FORMAT = new ThreadLocal<>();
private static final String TAG = Log.tag(DateUtils.class);
private static final ThreadLocal<SimpleDateFormat> DATE_FORMAT = new ThreadLocal<>();
private static final ThreadLocal<SimpleDateFormat> BRIEF_EXACT_FORMAT = new ThreadLocal<>();
private static final long MAX_RELATIVE_TIMESTAMP = TimeUnit.MINUTES.toMillis(3);

private static boolean isWithin(final long millis, final long span, final TimeUnit unit) {
return System.currentTimeMillis() - millis <= unit.toMillis(span);
Expand Down Expand Up @@ -172,8 +173,8 @@ public static boolean isSameDay(long t1, long t2) {
return d1.equals(d2);
}

public static boolean isSameExtendedRelativeTimestamp(@NonNull Context context, @NonNull Locale locale, long t1, long t2) {
return getExtendedRelativeTimeSpanString(context, locale, t1).equals(getExtendedRelativeTimeSpanString(context, locale, t2));
public static boolean isSameExtendedRelativeTimestamp(long second, long first) {
return second - first < MAX_RELATIVE_TIMESTAMP;
}

private static String getLocalizedPattern(String template, Locale locale) {
Expand Down
Expand Up @@ -21,6 +21,7 @@
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Paint;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
Expand Down

0 comments on commit b9081dc

Please sign in to comment.