diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java b/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java index c7527c5953..93a1eee5e3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java @@ -220,6 +220,7 @@ public class LinkPreviewView extends FrameLayout { thumbnailState.applyState(thumbnail); thumbnail.get().setImageResource(requestManager, new ImageSlide(linkPreview.getThumbnail().get()), type == TYPE_CONVERSATION && !scheduleMessageMode, false); thumbnail.get().showSecondaryText(false); + thumbnail.get().setOutlineEnabled(true); } else if (callLinkRootKey != null) { thumbnail.setVisibility(VISIBLE); thumbnailState.applyState(thumbnail); @@ -228,9 +229,10 @@ public class LinkPreviewView extends FrameLayout { new FallbackAvatarDrawable( getContext(), new FallbackAvatar.Resource.CallLink(AvatarColorHash.forCallLink(callLinkRootKey.getKeyBytes())) - ) + ).circleCrop() ); thumbnail.get().showSecondaryText(false); + thumbnail.get().setOutlineEnabled(false); } else { thumbnail.setVisibility(GONE); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java b/app/src/main/java/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java index 54c4920d21..249f9c04eb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/OutlinedThumbnailView.java @@ -3,17 +3,25 @@ package org.thoughtcrime.securesms.components; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; +import android.os.Bundle; +import android.os.Parcelable; import android.util.AttributeSet; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import androidx.core.os.BundleCompat; import org.thoughtcrime.securesms.R; public class OutlinedThumbnailView extends ThumbnailView { + private static final String STATE_OUTLINE_ENABLED = "state.outline.enabled"; + private static final String STATE_ROOT = "state.root"; + private CornerMask cornerMask; private Outliner outliner; + private boolean isOutlineEnabled; public OutlinedThumbnailView(Context context) { super(context); @@ -52,8 +60,38 @@ public class OutlinedThumbnailView extends ThumbnailView { protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); - cornerMask.mask(canvas); - outliner.draw(canvas); + if (isOutlineEnabled) { + cornerMask.mask(canvas); + outliner.draw(canvas); + } + } + + @Override + protected @NonNull Parcelable onSaveInstanceState() { + Parcelable root = super.onSaveInstanceState(); + Bundle state = new Bundle(); + + state.putParcelable(STATE_ROOT, root); + state.putBoolean(STATE_OUTLINE_ENABLED, isOutlineEnabled); + + return state; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + if (state instanceof Bundle) { + Parcelable root = BundleCompat.getParcelable((Bundle) state, STATE_ROOT, Parcelable.class); + + this.isOutlineEnabled = ((Bundle) state).getBoolean(STATE_OUTLINE_ENABLED, true); + super.onRestoreInstanceState(root); + } else { + super.onRestoreInstanceState(state); + } + } + + public void setOutlineEnabled(boolean isOutlineEnabled) { + this.isOutlineEnabled = isOutlineEnabled; + invalidate(); } public void setCorners(int topLeft, int topRight, int bottomRight, int bottomLeft) {