From ce4e762cd5e37c2b94b0997fdf365b15c6ac8e79 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Sat, 7 Jan 2023 21:29:03 -0300 Subject: [PATCH 1/6] Trying my best to make this work --- .../displayitems/TextStatusDisplayItem.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index 8501abd2e..d0892298c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -13,10 +13,12 @@ import android.widget.Button; import android.widget.TextView; import org.joinmastodon.android.R; +import org.joinmastodon.android.api.requests.accounts.GetWordFilters; import org.joinmastodon.android.api.requests.statuses.TranslateStatus; import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.BaseStatusListFragment; +import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.drawables.SpoilerStripesDrawable; @@ -25,6 +27,9 @@ import org.joinmastodon.android.model.TranslatedStatus; import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.ui.utils.CustomEmojiHelper; import org.joinmastodon.android.ui.views.LinkedTextView; +import org.joinmastodon.android.utils.StatusFilterPredicate; + +import java.util.List; import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.ErrorResponse; @@ -43,12 +48,23 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ public boolean translated = false; public TranslatedStatus translation = null; private AccountSession session; + private static StatusFilterPredicate statusFilterPredicate; public TextStatusDisplayItem(String parentID, CharSequence text, BaseStatusListFragment parentFragment, Status status){ super(parentID, parentFragment); this.text=text; this.status=status; emojiHelper.setText(text); + new GetWordFilters().setCallback(new Callback>() { + @Override + public void onSuccess(List result) { + statusFilterPredicate = new StatusFilterPredicate(result); + } + + @Override + public void onError(ErrorResponse error) { + } + }); if(!TextUtils.isEmpty(status.spoilerText)){ parsedSpoilerText=HtmlParser.parseCustomEmoji(status.spoilerText, status.emojis); spoilerEmojiHelper=new CustomEmojiHelper(); @@ -111,6 +127,9 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ @Override public void onBind(TextStatusDisplayItem item){ + if(statusFilterPredicate!=null){ + statusFilterPredicate.test(item.status); + } text.setText(item.translated ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) : item.text); @@ -181,7 +200,12 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ rebind(); } }); - } + if(statusFilterPredicate!=null){ + if(!statusFilterPredicate.test(item.status)){ + text.setText("Filtered"); + } + } + } @Override public void setImage(int index, Drawable image){ From 1e99940c1d5a840da1c6cf11565fe0561facaa1a Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Sun, 8 Jan 2023 21:01:59 -0300 Subject: [PATCH 2/6] I have figured out something, I dont know what it is though --- .../displayitems/TextStatusDisplayItem.java | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index d0892298c..ff68da619 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -48,23 +48,12 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ public boolean translated = false; public TranslatedStatus translation = null; private AccountSession session; - private static StatusFilterPredicate statusFilterPredicate; public TextStatusDisplayItem(String parentID, CharSequence text, BaseStatusListFragment parentFragment, Status status){ super(parentID, parentFragment); this.text=text; this.status=status; emojiHelper.setText(text); - new GetWordFilters().setCallback(new Callback>() { - @Override - public void onSuccess(List result) { - statusFilterPredicate = new StatusFilterPredicate(result); - } - - @Override - public void onError(ErrorResponse error) { - } - }); if(!TextUtils.isEmpty(status.spoilerText)){ parsedSpoilerText=HtmlParser.parseCustomEmoji(status.spoilerText, status.emojis); spoilerEmojiHelper=new CustomEmojiHelper(); @@ -127,9 +116,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ @Override public void onBind(TextStatusDisplayItem item){ - if(statusFilterPredicate!=null){ - statusFilterPredicate.test(item.status); - } +// System.out.println(item.status.filtered.size()); text.setText(item.translated ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) : item.text); @@ -200,11 +187,6 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ rebind(); } }); - if(statusFilterPredicate!=null){ - if(!statusFilterPredicate.test(item.status)){ - text.setText("Filtered"); - } - } } @Override From 2d9938e8b2c633fd16dd3bb8628ba6cd717bd4c3 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Sun, 8 Jan 2023 21:31:01 -0300 Subject: [PATCH 3/6] Its half working --- .../android/ui/displayitems/TextStatusDisplayItem.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index ff68da619..ff811dd00 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -116,10 +116,12 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ @Override public void onBind(TextStatusDisplayItem item){ -// System.out.println(item.status.filtered.size()); text.setText(item.translated ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) : item.text); + if(item.status.filtered.size() > 0){ + text.setText("Filtered"); + } text.setTextIsSelectable(item.textSelectable); spoilerTitleInline.setTextIsSelectable(item.textSelectable); text.setInvalidateOnEveryFrame(false); From 6c778d05ea190aed9adeafe8c95f160755e9b7cc Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Mon, 9 Jan 2023 16:16:38 -0300 Subject: [PATCH 4/6] Its half working++ --- .../displayitems/TextStatusDisplayItem.java | 85 +++++++++++++++---- 1 file changed, 69 insertions(+), 16 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index ff811dd00..8da43903c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -43,6 +43,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ private CharSequence text; private CustomEmojiHelper emojiHelper=new CustomEmojiHelper(), spoilerEmojiHelper; private CharSequence parsedSpoilerText; + private boolean showFiltered = false; public boolean textSelectable; public final Status status; public boolean translated = false; @@ -119,9 +120,6 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ text.setText(item.translated ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) : item.text); - if(item.status.filtered.size() > 0){ - text.setText("Filtered"); - } text.setTextIsSelectable(item.textSelectable); spoilerTitleInline.setTextIsSelectable(item.textSelectable); text.setInvalidateOnEveryFrame(false); @@ -129,27 +127,82 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ spoilerTitleInline.setPadding(spoilerTitleInline.getPaddingLeft(), item.inset ? 0 : V.dp(14), spoilerTitleInline.getPaddingRight(), item.inset ? 0 : V.dp(14)); borderTop.setBackground(item.inset ? null : borderColor); borderBottom.setBackground(item.inset ? null : borderColor); - if(!TextUtils.isEmpty(item.status.spoilerText)){ - spoilerTitle.setText(item.parsedSpoilerText); - spoilerTitleInline.setText(item.parsedSpoilerText); - if(item.status.spoilerRevealed){ - spoilerOverlay.setVisibility(View.GONE); - spoilerHeader.setVisibility(View.VISIBLE); - textWrap.setVisibility(View.VISIBLE); - itemView.setClickable(false); - }else{ + +// if(!TextUtils.isEmpty(item.status.spoilerText)){ +// spoilerTitle.setText(item.parsedSpoilerText); +// spoilerTitleInline.setText(item.parsedSpoilerText); +// if(item.status.spoilerRevealed){ +// spoilerOverlay.setVisibility(View.GONE); +// spoilerHeader.setVisibility(View.VISIBLE); +// textWrap.setVisibility(View.VISIBLE); +// itemView.setClickable(false); +// }else{ +// spoilerOverlay.setVisibility(View.VISIBLE); +// spoilerHeader.setVisibility(View.GONE); +// textWrap.setVisibility(View.GONE); +// itemView.setClickable(true); +// } +// }else{ +// spoilerOverlay.setVisibility(View.GONE); +// spoilerHeader.setVisibility(View.GONE); +// textWrap.setVisibility(View.VISIBLE); +// itemView.setClickable(false); +// } + + if(!item.showFiltered){ + if(item.status.filtered.size() > 0){ + spoilerTitle.setText("Filtered"); + spoilerTitleInline.setText(item.parsedSpoilerText); +// if(item.status.spoilerRevealed){ +// spoilerOverlay.setVisibility(View.GONE); +// spoilerHeader.setVisibility(View.VISIBLE); +// textWrap.setVisibility(View.VISIBLE); +// itemView.setClickable(false); +// }else{ spoilerOverlay.setVisibility(View.VISIBLE); spoilerHeader.setVisibility(View.GONE); textWrap.setVisibility(View.GONE); itemView.setClickable(true); } }else{ - spoilerOverlay.setVisibility(View.GONE); - spoilerHeader.setVisibility(View.GONE); - textWrap.setVisibility(View.VISIBLE); - itemView.setClickable(false); + if(!TextUtils.isEmpty(item.status.spoilerText)){ + spoilerTitle.setText(item.parsedSpoilerText); + spoilerTitleInline.setText(item.parsedSpoilerText); + if(item.status.spoilerRevealed){ + spoilerOverlay.setVisibility(View.GONE); + spoilerHeader.setVisibility(View.VISIBLE); + textWrap.setVisibility(View.VISIBLE); + itemView.setClickable(false); + }else{ + spoilerOverlay.setVisibility(View.VISIBLE); + spoilerHeader.setVisibility(View.GONE); + textWrap.setVisibility(View.GONE); + itemView.setClickable(true); + } + }else{ + spoilerOverlay.setVisibility(View.GONE); + spoilerHeader.setVisibility(View.GONE); + textWrap.setVisibility(View.VISIBLE); + itemView.setClickable(false); + } } +// else{ +// spoilerOverlay.setVisibility(View.GONE); +// spoilerHeader.setVisibility(View.GONE); +// textWrap.setVisibility(View.VISIBLE); +// itemView.setClickable(false); +// } + + +// if(item.status.filtered.size() > 0){ +//// text.setText("Filtered"); +// spoilerOverlay.setVisibility(View.VISIBLE); +// spoilerHeader.setVisibility(View.VISIBLE); +// textWrap.setVisibility(View.GONE); +// itemView.setClickable(false); +// } + Instance instanceInfo = AccountSessionManager.getInstance().getInstanceInfo(item.session.domain); boolean translateEnabled = instanceInfo.v2 != null && instanceInfo.v2.configuration.translation != null && instanceInfo.v2.configuration.translation.enabled; From 5118a1fb1e3f5e14562bf8bdcf4311073998d05d Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Wed, 18 Jan 2023 15:36:22 -0300 Subject: [PATCH 5/6] Reverting TextStatusDisplayItem to master's, as I have figured out a better way to do filters --- .../displayitems/TextStatusDisplayItem.java | 93 ++++--------------- 1 file changed, 16 insertions(+), 77 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index 594473eba..f44226401 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -13,12 +13,10 @@ import android.widget.Button; import android.widget.TextView; import org.joinmastodon.android.R; -import org.joinmastodon.android.api.requests.accounts.GetWordFilters; import org.joinmastodon.android.api.requests.statuses.TranslateStatus; import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.BaseStatusListFragment; -import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.drawables.SpoilerStripesDrawable; @@ -27,9 +25,6 @@ import org.joinmastodon.android.model.TranslatedStatus; import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.ui.utils.CustomEmojiHelper; import org.joinmastodon.android.ui.views.LinkedTextView; -import org.joinmastodon.android.utils.StatusFilterPredicate; - -import java.util.List; import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.ErrorResponse; @@ -43,7 +38,6 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ private CharSequence text; private CustomEmojiHelper emojiHelper=new CustomEmojiHelper(), spoilerEmojiHelper; private CharSequence parsedSpoilerText; - private boolean showFiltered = false; public boolean textSelectable; public final Status status; public boolean disableTranslate; @@ -120,8 +114,8 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ @Override public void onBind(TextStatusDisplayItem item){ text.setText(item.translated - ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) - : item.text); + ? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID()) + : item.text); text.setTextIsSelectable(item.textSelectable); spoilerTitleInline.setTextIsSelectable(item.textSelectable); text.setInvalidateOnEveryFrame(false); @@ -129,82 +123,27 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ spoilerTitleInline.setPadding(spoilerTitleInline.getPaddingLeft(), item.inset ? 0 : V.dp(14), spoilerTitleInline.getPaddingRight(), item.inset ? 0 : V.dp(14)); borderTop.setBackground(item.inset ? null : borderColor); borderBottom.setBackground(item.inset ? null : borderColor); - -// if(!TextUtils.isEmpty(item.status.spoilerText)){ -// spoilerTitle.setText(item.parsedSpoilerText); -// spoilerTitleInline.setText(item.parsedSpoilerText); -// if(item.status.spoilerRevealed){ -// spoilerOverlay.setVisibility(View.GONE); -// spoilerHeader.setVisibility(View.VISIBLE); -// textWrap.setVisibility(View.VISIBLE); -// itemView.setClickable(false); -// }else{ -// spoilerOverlay.setVisibility(View.VISIBLE); -// spoilerHeader.setVisibility(View.GONE); -// textWrap.setVisibility(View.GONE); -// itemView.setClickable(true); -// } -// }else{ -// spoilerOverlay.setVisibility(View.GONE); -// spoilerHeader.setVisibility(View.GONE); -// textWrap.setVisibility(View.VISIBLE); -// itemView.setClickable(false); -// } - - if(!item.showFiltered){ - if(item.status.filtered.size() > 0){ - spoilerTitle.setText("Filtered"); - spoilerTitleInline.setText(item.parsedSpoilerText); -// if(item.status.spoilerRevealed){ -// spoilerOverlay.setVisibility(View.GONE); -// spoilerHeader.setVisibility(View.VISIBLE); -// textWrap.setVisibility(View.VISIBLE); -// itemView.setClickable(false); -// }else{ + if(!TextUtils.isEmpty(item.status.spoilerText)){ + spoilerTitle.setText(item.parsedSpoilerText); + spoilerTitleInline.setText(item.parsedSpoilerText); + if(item.status.spoilerRevealed){ + spoilerOverlay.setVisibility(View.GONE); + spoilerHeader.setVisibility(View.VISIBLE); + textWrap.setVisibility(View.VISIBLE); + itemView.setClickable(false); + }else{ spoilerOverlay.setVisibility(View.VISIBLE); spoilerHeader.setVisibility(View.GONE); textWrap.setVisibility(View.GONE); itemView.setClickable(true); } }else{ - if(!TextUtils.isEmpty(item.status.spoilerText)){ - spoilerTitle.setText(item.parsedSpoilerText); - spoilerTitleInline.setText(item.parsedSpoilerText); - if(item.status.spoilerRevealed){ - spoilerOverlay.setVisibility(View.GONE); - spoilerHeader.setVisibility(View.VISIBLE); - textWrap.setVisibility(View.VISIBLE); - itemView.setClickable(false); - }else{ - spoilerOverlay.setVisibility(View.VISIBLE); - spoilerHeader.setVisibility(View.GONE); - textWrap.setVisibility(View.GONE); - itemView.setClickable(true); - } - }else{ - spoilerOverlay.setVisibility(View.GONE); - spoilerHeader.setVisibility(View.GONE); - textWrap.setVisibility(View.VISIBLE); - itemView.setClickable(false); - } + spoilerOverlay.setVisibility(View.GONE); + spoilerHeader.setVisibility(View.GONE); + textWrap.setVisibility(View.VISIBLE); + itemView.setClickable(false); } -// else{ -// spoilerOverlay.setVisibility(View.GONE); -// spoilerHeader.setVisibility(View.GONE); -// textWrap.setVisibility(View.VISIBLE); -// itemView.setClickable(false); -// } - - -// if(item.status.filtered.size() > 0){ -//// text.setText("Filtered"); -// spoilerOverlay.setVisibility(View.VISIBLE); -// spoilerHeader.setVisibility(View.VISIBLE); -// textWrap.setVisibility(View.GONE); -// itemView.setClickable(false); -// } - Instance instanceInfo = AccountSessionManager.getInstance().getInstanceInfo(item.session.domain); boolean translateEnabled = !item.disableTranslate && instanceInfo.v2 != null && instanceInfo.v2.configuration.translation != null && instanceInfo.v2.configuration.translation.enabled; @@ -245,7 +184,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ rebind(); } }); - } + } @Override public void setImage(int index, Drawable image){ From b79b69d961e3b87d2a4236f8c865f9ef5a0da280 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Wed, 18 Jan 2023 15:46:15 -0300 Subject: [PATCH 6/6] Adding a todo --- .../org/joinmastodon/android/fragments/HomeTimelineFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 0d18115ed..56ed43349 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -81,6 +81,7 @@ public class HomeTimelineFragment extends StatusListFragment{ } private List filterPosts(List items) { + // This is the function I must use to solve the filters thing for real return items.stream().filter(i -> (GlobalUserPreferences.showReplies || i.inReplyToId == null) && (GlobalUserPreferences.showBoosts || i.reblog == null)