NSFW for Pixelfed view

This commit is contained in:
Thomas 2023-01-11 18:04:37 +01:00
parent ac503cdf0c
commit edc4f1357e
2 changed files with 47 additions and 13 deletions

View File

@ -17,23 +17,29 @@ package app.fedilab.android.ui.drawer;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.core.app.ActivityOptionsCompat; import androidx.core.app.ActivityOptionsCompat;
import androidx.preference.PreferenceManager;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.smarteist.autoimageslider.SliderViewAdapter; import com.smarteist.autoimageslider.SliderViewAdapter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import app.fedilab.android.R;
import app.fedilab.android.activities.MediaActivity; import app.fedilab.android.activities.MediaActivity;
import app.fedilab.android.client.entities.api.Attachment; import app.fedilab.android.client.entities.api.Attachment;
import app.fedilab.android.client.entities.api.Status; import app.fedilab.android.client.entities.api.Status;
import app.fedilab.android.databinding.DrawerSliderBinding; import app.fedilab.android.databinding.DrawerSliderBinding;
import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.Helper;
import jp.wasabeef.glide.transformations.BlurTransformation;
public class SliderAdapter extends SliderViewAdapter<SliderAdapter.SliderAdapterVH> { public class SliderAdapter extends SliderViewAdapter<SliderAdapter.SliderAdapterVH> {
@ -63,21 +69,48 @@ public class SliderAdapter extends SliderViewAdapter<SliderAdapter.SliderAdapter
public void onBindViewHolder(SliderAdapterVH viewHolder, final int position) { public void onBindViewHolder(SliderAdapterVH viewHolder, final int position) {
Attachment sliderItem = mSliderItems.get(position); Attachment sliderItem = mSliderItems.get(position);
if (status.sensitive) {
Glide.with(viewHolder.itemView)
.load(sliderItem.preview_url)
.centerCrop()
.apply(new RequestOptions().transform(new BlurTransformation(50, 3)))
.into(viewHolder.binding.ivAutoImageSlider);
} else {
Glide.with(viewHolder.itemView)
.load(sliderItem.preview_url)
.centerCrop()
.into(viewHolder.binding.ivAutoImageSlider);
}
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
final int timeout = sharedpreferences.getInt(context.getString(R.string.SET_NSFW_TIMEOUT), 5);
boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false);
Glide.with(viewHolder.itemView)
.load(sliderItem.preview_url)
.centerCrop()
.into(viewHolder.binding.ivAutoImageSlider);
viewHolder.itemView.setOnClickListener(v -> { viewHolder.itemView.setOnClickListener(v -> {
Intent mediaIntent = new Intent(context, MediaActivity.class); if (status.sensitive && !expand_media) {
Bundle b = new Bundle(); status.sensitive = false;
b.putInt(Helper.ARG_MEDIA_POSITION, position + 1); notifyDataSetChanged();
b.putSerializable(Helper.ARG_MEDIA_ARRAY, new ArrayList<>(status.media_attachments)); if (timeout > 0) {
mediaIntent.putExtras(b); new CountDownTimer((timeout * 1000L), 1000) {
ActivityOptionsCompat options = ActivityOptionsCompat public void onTick(long millisUntilFinished) {
.makeSceneTransitionAnimation((Activity) context, viewHolder.binding.ivAutoImageSlider, status.media_attachments.get(0).url); }
// start the new activity
context.startActivity(mediaIntent, options.toBundle()); public void onFinish() {
status.sensitive = true;
notifyDataSetChanged();
}
}.start();
}
} else {
Intent mediaIntent = new Intent(context, MediaActivity.class);
Bundle b = new Bundle();
b.putInt(Helper.ARG_MEDIA_POSITION, position + 1);
b.putSerializable(Helper.ARG_MEDIA_ARRAY, new ArrayList<>(status.media_attachments));
mediaIntent.putExtras(b);
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation((Activity) context, viewHolder.binding.ivAutoImageSlider, status.media_attachments.get(0).url);
// start the new activity
context.startActivity(mediaIntent, options.toBundle());
}
}); });
} }

View File

@ -9,4 +9,5 @@ Fixed:
- Fix jumps with the fetch more feature - Fix jumps with the fetch more feature
- Fix videos cannot be saved - Fix videos cannot be saved
- Tags cannot be pinned when there are no custom tabs - Tags cannot be pinned when there are no custom tabs
- PixelFed view: NSFW not honored
- Fix crashes - Fix crashes