added image preview blur for sensitive media

This commit is contained in:
nuclearfog 2023-03-06 22:02:57 +01:00
parent ec6afb12e2
commit 3d3ccb1476
No known key found for this signature in database
GPG Key ID: 03488A185C476379
2 changed files with 17 additions and 8 deletions

View File

@ -51,6 +51,7 @@ public class PreviewAdapter extends RecyclerView.Adapter<ViewHolder> implements
private OnCardClickListener listener;
private List<Object> items = new ArrayList<>();
private boolean blurMedia = false;
/**
*
@ -85,7 +86,7 @@ public class PreviewAdapter extends RecyclerView.Adapter<ViewHolder> implements
if (holder instanceof PreviewHolder && item instanceof Media) {
PreviewHolder previewHolder = ((PreviewHolder) holder);
Media media = (Media) item;
previewHolder.setContent(media);
previewHolder.setContent(media, blurMedia);
} else if (holder instanceof CardHolder && item instanceof Card) {
CardHolder cardHolder = (CardHolder) holder;
Card card = (Card) item;
@ -171,6 +172,7 @@ public class PreviewAdapter extends RecyclerView.Adapter<ViewHolder> implements
items.addAll(Arrays.asList(status.getMedia()));
if (status.getCards().length > 0)
items.addAll(Arrays.asList(status.getCards()));
blurMedia = status.isSensitive();
notifyDataSetChanged();
}

View File

@ -13,11 +13,14 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.NetworkPolicy;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Media;
import jp.wasabeef.picasso.transformations.BlurTransformation;
/**
* holder class for {@link org.nuclearfog.twidda.ui.adapter.PreviewAdapter}
*
@ -65,14 +68,18 @@ public class PreviewHolder extends ViewHolder implements OnClickListener {
*
* @param media media content
*/
public void setContent(Media media) {
if (settings.imagesEnabled()) {
if (!media.getPreviewUrl().isEmpty()) {
picasso.load(media.getPreviewUrl()).networkPolicy(NetworkPolicy.NO_STORE).memoryPolicy(MemoryPolicy.NO_STORE).error(R.drawable.no_image).into(previewImage);
} else {
previewImage.setImageDrawable(new ColorDrawable(EMPTY_COLOR));
public void setContent(Media media, boolean blurImage) {
if (settings.imagesEnabled() && !media.getPreviewUrl().isEmpty()) {
RequestCreator picassoBuilder = picasso.load(media.getPreviewUrl()).error(R.drawable.no_image);
picassoBuilder.networkPolicy(NetworkPolicy.NO_STORE).memoryPolicy(MemoryPolicy.NO_STORE);
if (blurImage) {
BlurTransformation blurTransformation = new BlurTransformation(previewImage.getContext(), 30);
picassoBuilder.transform(blurTransformation);
}
}// todo add placeholder if image load is disabled
picassoBuilder.into(previewImage);
} else {
previewImage.setImageDrawable(new ColorDrawable(EMPTY_COLOR));
}
if (media.getMediaType() == Media.VIDEO || media.getMediaType() == Media.GIF) {
playIcon.setVisibility(View.VISIBLE);
} else {