Now it acctually shows a missing posts warning below every filtered post. Still a long way to go
This commit is contained in:
parent
9a55f847b9
commit
b625ed7aec
|
@ -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(){
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 -> {
|
||||||
|
|
|
@ -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,8 +172,9 @@ 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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue