fix and refactor removing statuses
This commit is contained in:
@@ -43,7 +43,7 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{
|
||||
public CharSequence parsedName, parsedBio;
|
||||
|
||||
public AccountCardStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, String accountID, Account account, Notification notification){
|
||||
super(parentID, null, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.account=account;
|
||||
this.notification=notification;
|
||||
avaRequest=new UrlImageLoaderRequest(
|
||||
|
||||
@@ -14,7 +14,7 @@ public class AccountStatusDisplayItem extends StatusDisplayItem{
|
||||
public final AccountViewModel account;
|
||||
|
||||
public AccountStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Account account){
|
||||
super(parentID, null, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.account=new AccountViewModel(account, parentFragment.getAccountID());
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public class AudioStatusDisplayItem extends StatusDisplayItem{
|
||||
private final ImageLoaderRequest imageRequest;
|
||||
|
||||
public AudioStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Status status, Attachment attachment){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.attachment=attachment;
|
||||
imageRequest=new UrlImageLoaderRequest(TextUtils.isEmpty(attachment.previewUrl) ? status.account.avatarStatic : attachment.previewUrl, V.dp(100), V.dp(100));
|
||||
|
||||
@@ -12,8 +12,8 @@ import me.grishka.appkit.utils.V;
|
||||
|
||||
public class DummyStatusDisplayItem extends StatusDisplayItem {
|
||||
|
||||
public DummyStatusDisplayItem(String parentID, String contentStatusID, BaseStatusListFragment<?> parentFragment) {
|
||||
super(parentID, contentStatusID, parentFragment);
|
||||
public DummyStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment) {
|
||||
super(parentID, parentFragment);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -65,7 +65,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
||||
private static final float ALPHA_DISABLED=0.55f;
|
||||
|
||||
public EmojiReactionsStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Status status, String accountID, boolean hideEmpty, boolean forAnnouncement) {
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.hideEmpty=hideEmpty;
|
||||
this.forAnnouncement=forAnnouncement;
|
||||
|
||||
@@ -42,7 +42,7 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
|
||||
private static final DateTimeFormatter TIME_FORMATTER=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT);
|
||||
|
||||
public ExtendedFooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, String accountID, Status status){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.accountID=accountID;
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
public class FileStatusDisplayItem extends StatusDisplayItem{
|
||||
private final Attachment attachment;
|
||||
|
||||
public FileStatusDisplayItem(String parentID, String contentStatusID, BaseStatusListFragment<?> parentFragment, Attachment attachment) {
|
||||
super(parentID, contentStatusID, parentFragment);
|
||||
public FileStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Attachment attachment) {
|
||||
super(parentID, parentFragment);
|
||||
this.attachment=attachment;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
||||
public boolean hideCounts;
|
||||
|
||||
public FooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Status status, String accountID){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.accountID=accountID;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ public class GapStatusDisplayItem extends StatusDisplayItem{
|
||||
private final Status status;
|
||||
|
||||
public GapStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Status status){
|
||||
super(parentID, null, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ public class HashtagStatusDisplayItem extends StatusDisplayItem{
|
||||
public final Hashtag tag;
|
||||
|
||||
public HashtagStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Hashtag tag){
|
||||
super(parentID, null, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.tag=tag;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
private Consumer<String> consumeReadAnnouncement;
|
||||
|
||||
public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, BaseStatusListFragment parentFragment, String accountID, Status status, CharSequence extraText, Notification notification, ScheduledStatus scheduledStatus){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
AccountSession session = AccountSessionManager.get(accountID);
|
||||
user=scheduledStatus != null ? session.self : user;
|
||||
this.user=user;
|
||||
|
||||
@@ -28,7 +28,7 @@ public class LinkCardStatusDisplayItem extends StatusDisplayItem{
|
||||
private final UrlImageLoaderRequest imgRequest;
|
||||
|
||||
public LinkCardStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Status status){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
if(status.card.image!=null)
|
||||
imgRequest=new UrlImageLoaderRequest(status.card.image, 1000, 1000);
|
||||
|
||||
@@ -57,7 +57,7 @@ public class MediaGridStatusDisplayItem extends StatusDisplayItem{
|
||||
public String sensitiveTitle;
|
||||
|
||||
public MediaGridStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, PhotoLayoutHelper.TiledLayoutResult tiledLayout, List<Attachment> attachments, Status status){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.tiledLayout=tiledLayout;
|
||||
this.viewPool=parentFragment.getAttachmentViewsPool();
|
||||
this.attachments=attachments;
|
||||
|
||||
@@ -49,7 +49,7 @@ public class NotificationHeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
private final CharSequence timestamp;
|
||||
|
||||
public NotificationHeaderStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Notification notification, String accountID){
|
||||
super(parentID, notification.status!=null ? notification.status.getContentStatus().id : null, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.notification=notification;
|
||||
this.accountID=accountID;
|
||||
this.timestamp=notification.createdAt==null ? null : UiUtils.formatRelativeTimestamp(context, notification.createdAt);
|
||||
|
||||
@@ -15,8 +15,8 @@ import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
public class PollFooterStatusDisplayItem extends StatusDisplayItem{
|
||||
public final Poll poll;
|
||||
|
||||
public PollFooterStatusDisplayItem(String parentID, String contentStatusID, BaseStatusListFragment parentFragment, Poll poll){
|
||||
super(parentID, contentStatusID, parentFragment);
|
||||
public PollFooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Poll poll){
|
||||
super(parentID, parentFragment);
|
||||
this.poll=poll;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,8 +31,8 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
|
||||
private final int optionIndex;
|
||||
public final Poll poll;
|
||||
|
||||
public PollOptionStatusDisplayItem(String parentID, String contentStatusID, Poll poll, int optionIndex, BaseStatusListFragment parentFragment){
|
||||
super(parentID, contentStatusID, parentFragment);
|
||||
public PollOptionStatusDisplayItem(String parentID, Poll poll, int optionIndex, BaseStatusListFragment parentFragment){
|
||||
super(parentID, parentFragment);
|
||||
this.optionIndex=optionIndex;
|
||||
option=poll.options.get(optionIndex);
|
||||
this.poll=poll;
|
||||
|
||||
@@ -50,7 +50,7 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
}
|
||||
|
||||
public ReblogOrReplyLineStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, CharSequence text, List<Emoji> emojis, @DrawableRes int icon, StatusPrivacy visibility, @Nullable View.OnClickListener handleClick, CharSequence fullText, Status status) {
|
||||
super(parentID, status.getContentStatus().id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
SpannableStringBuilder ssb=new SpannableStringBuilder(text);
|
||||
if(AccountSessionManager.get(parentFragment.getAccountID()).getLocalPreferences().customEmojiInNames)
|
||||
HtmlParser.parseCustomEmoji(ssb, emojis);
|
||||
|
||||
@@ -14,7 +14,7 @@ public class SectionHeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
public final Runnable onButtonClick;
|
||||
|
||||
public SectionHeaderStatusDisplayItem(BaseStatusListFragment parentFragment, String title, String buttonText, Runnable onButtonClick){
|
||||
super("", null, parentFragment);
|
||||
super("", parentFragment);
|
||||
this.title=title;
|
||||
this.buttonText=buttonText;
|
||||
this.onButtonClick=onButtonClick;
|
||||
|
||||
@@ -32,7 +32,7 @@ public class SpoilerStatusDisplayItem extends StatusDisplayItem{
|
||||
private final int attachmentCount;
|
||||
|
||||
public SpoilerStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, String title, Status statusForContent, Type type){
|
||||
super(parentID, statusForContent.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=statusForContent;
|
||||
this.type=type;
|
||||
this.attachmentCount=statusForContent.mediaAttachments.size();
|
||||
|
||||
@@ -13,6 +13,8 @@ import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.session.AccountLocalPreferences;
|
||||
@@ -22,6 +24,7 @@ import org.joinmastodon.android.fragments.HashtagTimelineFragment;
|
||||
import org.joinmastodon.android.fragments.HomeTabFragment;
|
||||
import org.joinmastodon.android.fragments.ListTimelineFragment;
|
||||
import org.joinmastodon.android.fragments.ProfileFragment;
|
||||
import org.joinmastodon.android.fragments.StatusListFragment;
|
||||
import org.joinmastodon.android.fragments.ThreadFragment;
|
||||
import org.joinmastodon.android.model.Account;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
@@ -53,7 +56,7 @@ import me.grishka.appkit.utils.BindableViewHolder;
|
||||
import me.grishka.appkit.views.UsableRecyclerView;
|
||||
|
||||
public abstract class StatusDisplayItem{
|
||||
public final String parentID, contentStatusID;
|
||||
public final String parentID;
|
||||
public final BaseStatusListFragment<?> parentFragment;
|
||||
public boolean inset;
|
||||
public int index;
|
||||
@@ -83,12 +86,21 @@ public abstract class StatusDisplayItem{
|
||||
this.isDirectDescendant = isDirectDescendant;
|
||||
}
|
||||
|
||||
public StatusDisplayItem(String parentID, String contentStatusID, BaseStatusListFragment<?> parentFragment){
|
||||
public StatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment){
|
||||
this.parentID=parentID;
|
||||
this.contentStatusID=contentStatusID;
|
||||
this.parentFragment=parentFragment;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getContentID(){
|
||||
if(parentFragment instanceof StatusListFragment slf){
|
||||
Status s=slf.getContentStatusByID(parentID);
|
||||
return s!=null ? s.id : parentID;
|
||||
}else{
|
||||
return parentID;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract Type getType();
|
||||
|
||||
public int getImageCount(){
|
||||
@@ -246,7 +258,7 @@ public abstract class StatusDisplayItem{
|
||||
}else if(!hasSpoiler && header!=null){
|
||||
header.needBottomPadding=true;
|
||||
}else if(hasSpoiler){
|
||||
contentItems.add(new DummyStatusDisplayItem(parentID, statusForContent.id, fragment));
|
||||
contentItems.add(new DummyStatusDisplayItem(parentID, fragment));
|
||||
}
|
||||
|
||||
List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList());
|
||||
@@ -270,11 +282,11 @@ public abstract class StatusDisplayItem{
|
||||
contentItems.add(new AudioStatusDisplayItem(parentID, fragment, statusForContent, att));
|
||||
}
|
||||
if(att.type==Attachment.Type.UNKNOWN){
|
||||
contentItems.add(new FileStatusDisplayItem(parentID, statusForContent.id, fragment, att));
|
||||
contentItems.add(new FileStatusDisplayItem(parentID, fragment, att));
|
||||
}
|
||||
}
|
||||
if(statusForContent.poll!=null){
|
||||
buildPollItems(parentID, statusForContent.id, fragment, statusForContent.poll, contentItems);
|
||||
buildPollItems(parentID, fragment, statusForContent.poll, contentItems);
|
||||
}
|
||||
if(statusForContent.card!=null && statusForContent.mediaAttachments.isEmpty()){
|
||||
contentItems.add(new LinkCardStatusDisplayItem(parentID, fragment, statusForContent));
|
||||
@@ -301,7 +313,7 @@ public abstract class StatusDisplayItem{
|
||||
boolean inset=(flags & FLAG_INSET)!=0;
|
||||
// add inset dummy so last content item doesn't clip out of inset bounds
|
||||
if((inset || footer==null) && (flags & FLAG_CHECKABLE)==0){
|
||||
items.add(new DummyStatusDisplayItem(parentID, statusForContent.id, fragment));
|
||||
items.add(new DummyStatusDisplayItem(parentID, fragment));
|
||||
// in case we ever need the dummy to display a margin for the media grid again:
|
||||
// (i forgot why we apparently don't need this anymore)
|
||||
// !contentItems.isEmpty() && contentItems
|
||||
@@ -322,13 +334,13 @@ public abstract class StatusDisplayItem{
|
||||
new ArrayList<>(List.of(new WarningFilteredStatusDisplayItem(parentID, fragment, statusForContent, items, applyingFilter)));
|
||||
}
|
||||
|
||||
public static void buildPollItems(String parentID, String contentStatusID, BaseStatusListFragment fragment, Poll poll, List<StatusDisplayItem> items){
|
||||
public static void buildPollItems(String parentID, BaseStatusListFragment fragment, Poll poll, List<StatusDisplayItem> items){
|
||||
int i=0;
|
||||
for(Poll.Option opt:poll.options){
|
||||
items.add(new PollOptionStatusDisplayItem(parentID, contentStatusID, poll, i, fragment));
|
||||
items.add(new PollOptionStatusDisplayItem(parentID, poll, i, fragment));
|
||||
i++;
|
||||
}
|
||||
items.add(new PollFooterStatusDisplayItem(parentID, contentStatusID, fragment, poll));
|
||||
items.add(new PollFooterStatusDisplayItem(parentID, fragment, poll));
|
||||
}
|
||||
|
||||
public enum Type{
|
||||
|
||||
@@ -42,7 +42,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
public final Status status;
|
||||
|
||||
public TextStatusDisplayItem(String parentID, CharSequence text, BaseStatusListFragment parentFragment, Status status, boolean disableTranslate){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.text=text;
|
||||
this.status=status;
|
||||
this.disableTranslate=disableTranslate;
|
||||
|
||||
@@ -19,7 +19,7 @@ public class WarningFilteredStatusDisplayItem extends StatusDisplayItem{
|
||||
public LegacyFilter applyingFilter;
|
||||
|
||||
public WarningFilteredStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Status status, List<StatusDisplayItem> filteredItems, LegacyFilter applyingFilter){
|
||||
super(parentID, status.id, parentFragment);
|
||||
super(parentID, parentFragment);
|
||||
this.status=status;
|
||||
this.filteredItems = filteredItems;
|
||||
this.applyingFilter = applyingFilter;
|
||||
|
||||
Reference in New Issue
Block a user