Now it acctually shows a missing posts warning below every filtered post. Still a long way to go

This commit is contained in:
LucasGGamerM 2023-01-29 18:24:34 -03:00
parent 9a55f847b9
commit b625ed7aec
6 changed files with 44 additions and 21 deletions

View File

@ -526,13 +526,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
protected void revealFiltered(Status status, String itemID){ protected void revealFiltered(Status status, String itemID){
status.filterRevealed=true; 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);
} }
@ -567,10 +561,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
public void onGapClick(GapStatusDisplayItem.Holder item){} public void onGapClick(GapStatusDisplayItem.Holder item){}
public void onWarningClick(WarningFilteredStatusDisplayItem.Holder warningItem){ public void onWarningClick(WarningFilteredStatusDisplayItem.Holder warningItem){
// Status status = warningItem.getItem().status; adapter.notifyItemChanged(warningItem.getAbsoluteAdapterPosition());
// String itemID = warningItem.getItemID();
warningItem.itemView.setVisibility(View.GONE);
// adapter.notifyItemChanged();
} }
public String getAccountID(){ public String getAccountID(){

View File

@ -58,7 +58,7 @@ public class Status extends BaseModel implements DisplayItemsParent{
public boolean bookmarked; public boolean bookmarked;
public boolean pinned; public boolean pinned;
public boolean filterRevealed = false; public boolean filterRevealed;
public transient boolean spoilerRevealed; public transient boolean spoilerRevealed;
public transient boolean hasGapAfter; public transient boolean hasGapAfter;

View File

@ -145,6 +145,8 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
private Relationship relationship; private Relationship relationship;
private APIRequest<?> currentRelationshipRequest; private APIRequest<?> currentRelationshipRequest;
ViewGroup.LayoutParams params;
private static final ViewOutlineProvider roundCornersOutline=new ViewOutlineProvider(){ private static final ViewOutlineProvider roundCornersOutline=new ViewOutlineProvider(){
@Override @Override
public void getOutline(View view, Outline outline){ public void getOutline(View view, Outline outline){
@ -278,8 +280,24 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
return true; return true;
}); });
UiUtils.enablePopupMenuIcons(activity, optionsMenu); UiUtils.enablePopupMenuIcons(activity, optionsMenu);
// if(!item.status.filterRevealed){
// this.itemView.setVisibility(View.GONE);
// params = this.itemView.getLayoutParams();
// params.height = 0;
// params.width = 0;
// this.itemView.setLayoutParams(params);
// }
} }
// public void setFilteredShown(){
// this.itemView.setVisibility(View.VISIBLE);
// params = this.itemView.getLayoutParams();
// params.height = 0;
// params.width = 0;
// this.itemView.setLayoutParams(params);
// }
private void populateAccountsMenu(Menu menu) { private void populateAccountsMenu(Menu menu) {
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts(); List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
sessions.stream().filter(s -> !s.getID().equals(item.accountID)).forEach(s -> { sessions.stream().filter(s -> !s.getID().equals(item.accountID)).forEach(s -> {

View File

@ -100,11 +100,8 @@ public abstract class StatusDisplayItem{
List<Filter> filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.HOME)).collect(Collectors.toList()); List<Filter> filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.HOME)).collect(Collectors.toList());
StatusFilterPredicate filterPredicate = new StatusFilterPredicate(filters); StatusFilterPredicate filterPredicate = new StatusFilterPredicate(filters);
if(!filterPredicate.testWithWarning(status)){
if(!status.filterRevealed){ statusForContent.filterRevealed = filterPredicate.testWithWarning(status);
items.add(new WarningFilteredStatusDisplayItem(parentID, fragment, status));
}
}
if(status.reblog!=null){ if(status.reblog!=null){
boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account); boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account);
@ -141,9 +138,9 @@ public abstract class StatusDisplayItem{
HeaderStatusDisplayItem header; HeaderStatusDisplayItem header;
items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus)); items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus));
if(!TextUtils.isEmpty(statusForContent.content)) if(!TextUtils.isEmpty(statusForContent.content)){
items.add(new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID), fragment, statusForContent, disableTranslate)); items.add(new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID), fragment, statusForContent, disableTranslate));
else } else
header.needBottomPadding=true; header.needBottomPadding=true;
List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList()); List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList());
if(!imageAttachments.isEmpty()){ if(!imageAttachments.isEmpty()){
@ -175,9 +172,10 @@ public abstract class StatusDisplayItem{
} }
if(addFooter){ if(addFooter){
items.add(new FooterStatusDisplayItem(parentID, fragment, statusForContent, accountID)); items.add(new FooterStatusDisplayItem(parentID, fragment, statusForContent, accountID));
if(status.hasGapAfter && !(fragment instanceof ThreadFragment)) if(status.hasGapAfter && !(fragment instanceof ThreadFragment)){
items.add(new GapStatusDisplayItem(parentID, fragment)); items.add(new GapStatusDisplayItem(parentID, fragment));
} }
}
int i=1; int i=1;
for(StatusDisplayItem item:items){ for(StatusDisplayItem item:items){
@ -185,6 +183,10 @@ public abstract class StatusDisplayItem{
item.index=i++; item.index=i++;
} }
if(!statusForContent.filterRevealed){
items.add(new WarningFilteredStatusDisplayItem(parentID, fragment, statusForContent));
}
return items; return items;
} }

View File

@ -6,6 +6,8 @@ import android.view.ViewGroup;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import org.joinmastodon.android.R; import org.joinmastodon.android.R;
import org.joinmastodon.android.fragments.BaseStatusListFragment; import org.joinmastodon.android.fragments.BaseStatusListFragment;
import org.joinmastodon.android.model.Status; import org.joinmastodon.android.model.Status;
@ -41,11 +43,16 @@ public class WarningFilteredStatusDisplayItem extends StatusDisplayItem{
@Override @Override
public void onBind(WarningFilteredStatusDisplayItem item){ public void onBind(WarningFilteredStatusDisplayItem item){
text.setVisibility(item.loading ? View.GONE : View.VISIBLE);
} }
@Override @Override
public void onClick(){ public void onClick(){
this.itemView.setVisibility(View.GONE);
ViewGroup.LayoutParams params = this.itemView.getLayoutParams();
params.height = 0;
params.width = 0;
this.itemView.setLayoutParams(params);
item.parentFragment.onWarningClick(this); item.parentFragment.onWarningClick(this);
} }
} }

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp">
</FrameLayout>