From 9a55f847b95242959f15e29b99dcb55520a82b3f Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Sat, 28 Jan 2023 20:19:41 -0300 Subject: [PATCH] Its once again almost working --- .../fragments/BaseStatusListFragment.java | 30 +++++++++++++++++++ .../ui/displayitems/StatusDisplayItem.java | 19 +++++++----- .../WarningFilteredStatusDisplayItem.java | 7 +++-- .../main/res/layout/display_item_warning.xml | 1 + 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java index b28bfe6d3..974bba48f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java @@ -42,6 +42,7 @@ import org.joinmastodon.android.ui.displayitems.PollFooterStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.PollOptionStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; import org.joinmastodon.android.ui.displayitems.TextStatusDisplayItem; +import org.joinmastodon.android.ui.displayitems.WarningFilteredStatusDisplayItem; import org.joinmastodon.android.ui.photoviewer.PhotoViewer; import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost; import org.joinmastodon.android.ui.utils.UiUtils; @@ -513,6 +514,28 @@ public abstract class BaseStatusListFragment exten updateImagesSpoilerState(status, itemID); } +// public void onRevealFilteredClick(TextStatusDisplayItem.Holder holder){ +// Status status=holder.getItem().status; +// revealFiltered(status, holder.getItemID()); +// } + + public void onRevealFilteredClick(WarningFilteredStatusDisplayItem.Holder holder){ + Status status=holder.getItem().status; + revealFiltered(status, holder.getItemID()); + } + + protected void revealFiltered(Status status, String itemID){ + status.filterRevealed=true; + TextStatusDisplayItem.Holder text=findHolderOfType(itemID, TextStatusDisplayItem.Holder.class); + if(text!=null) + adapter.notifyItemChanged(text.getAbsoluteAdapterPosition()-getMainAdapterOffset()); + HeaderStatusDisplayItem.Holder header=findHolderOfType(itemID, HeaderStatusDisplayItem.Holder.class); + if(header!=null) + header.rebind(); + updateImagesSpoilerState(status, itemID); + } + + public void onVisibilityIconClick(HeaderStatusDisplayItem.Holder holder){ Status status=holder.getItem().status; status.spoilerRevealed=!status.spoilerRevealed; @@ -543,6 +566,13 @@ public abstract class BaseStatusListFragment exten public void onGapClick(GapStatusDisplayItem.Holder item){} + public void onWarningClick(WarningFilteredStatusDisplayItem.Holder warningItem){ +// Status status = warningItem.getItem().status; +// String itemID = warningItem.getItemID(); + warningItem.itemView.setVisibility(View.GONE); +// adapter.notifyItemChanged(); + } + public String getAccountID(){ return accountID; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index 88f2a742c..d265e14a2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -98,6 +98,14 @@ public abstract class StatusDisplayItem{ args.putString("account", accountID); ScheduledStatus scheduledStatus = parentObject instanceof ScheduledStatus ? (ScheduledStatus) parentObject : null; + List filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.HOME)).collect(Collectors.toList()); + StatusFilterPredicate filterPredicate = new StatusFilterPredicate(filters); + if(!filterPredicate.testWithWarning(status)){ + if(!status.filterRevealed){ + items.add(new WarningFilteredStatusDisplayItem(parentID, fragment, status)); + } + } + if(status.reblog!=null){ boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account); items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, fragment.getString(R.string.user_boosted, status.account.displayName), status.account.emojis, R.drawable.ic_fluent_arrow_repeat_all_20_filled, isOwnPost ? status.visibility : null, i->{ @@ -131,14 +139,6 @@ public abstract class StatusDisplayItem{ ))); } - List filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.HOME)).collect(Collectors.toList()); - StatusFilterPredicate filterPredicate = new StatusFilterPredicate(filters); - if(!filterPredicate.testWithWarning(status)){ - if(!status.filterRevealed){ - items.add(new WarningFilteredStatusDisplayItem(parentID, fragment, status)); - return items; - } - } HeaderStatusDisplayItem header; items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus)); if(!TextUtils.isEmpty(statusForContent.content)) @@ -178,11 +178,14 @@ public abstract class StatusDisplayItem{ if(status.hasGapAfter && !(fragment instanceof ThreadFragment)) items.add(new GapStatusDisplayItem(parentID, fragment)); } + int i=1; for(StatusDisplayItem item:items){ item.inset=inset; item.index=i++; } + + return items; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java index d42e596e8..0f5e6d0bc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java @@ -27,14 +27,16 @@ public class WarningFilteredStatusDisplayItem extends StatusDisplayItem{ } public static class Holder extends StatusDisplayItem.Holder{ + public final View warningWrap; public final ProgressBar progress; public final TextView text; public Holder(Context context, ViewGroup parent){ super(context, R.layout.display_item_warning, parent); + warningWrap=findViewById(R.id.warning_wrap); progress=findViewById(R.id.progress); text=findViewById(R.id.text); -// itemView.setForeground(new SawtoothTearDrawable(context)); +// itemView.setOnClickListener(v->item.parentFragment.onRevealFilteredClick(this)); } @Override @@ -44,8 +46,7 @@ public class WarningFilteredStatusDisplayItem extends StatusDisplayItem{ @Override public void onClick(){ - item.status.filterRevealed = true; -// item.parentFragment.onGapClick(this); + item.parentFragment.onWarningClick(this); } } } diff --git a/mastodon/src/main/res/layout/display_item_warning.xml b/mastodon/src/main/res/layout/display_item_warning.xml index 83bcf348d..0549861c0 100644 --- a/mastodon/src/main/res/layout/display_item_warning.xml +++ b/mastodon/src/main/res/layout/display_item_warning.xml @@ -2,6 +2,7 @@