Notifications

This commit is contained in:
Grishka
2022-01-24 02:56:57 +03:00
parent c3b7fb7002
commit a4a514d37a
17 changed files with 448 additions and 271 deletions

View File

@@ -31,8 +31,8 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
private Fragment parentFragment;
private String accountID;
public HeaderStatusDisplayItem(Status status, Account user, Instant createdAt, Fragment parentFragment, String accountID){
super(status);
public HeaderStatusDisplayItem(String parentID, Account user, Instant createdAt, Fragment parentFragment, String accountID){
super(parentID);
this.user=user;
this.createdAt=createdAt;
avaRequest=new UrlImageLoaderRequest(user.avatar);

View File

@@ -21,8 +21,10 @@ public class PhotoStatusDisplayItem extends StatusDisplayItem{
private Attachment attachment;
private ImageLoaderRequest request;
private Fragment parentFragment;
public PhotoStatusDisplayItem(Status status, Attachment photo, Fragment parentFragment){
super(status);
private Status status;
public PhotoStatusDisplayItem(String parentID, Status status, Attachment photo, Fragment parentFragment){
super(parentID);
this.status=status;
this.attachment=photo;
request=new UrlImageLoaderRequest(photo.url, 1000, 1000);
this.parentFragment=parentFragment;
@@ -69,7 +71,7 @@ public class PhotoStatusDisplayItem extends StatusDisplayItem{
private void onViewClick(View v){
if(item.parentFragment instanceof PhotoViewerHost){
Status contentStatus=item.status.reblog!=null ? item.status.reblog : item.status;
((PhotoViewerHost) item.parentFragment).openPhotoViewer(item.status, contentStatus.mediaAttachments.indexOf(item.attachment));
((PhotoViewerHost) item.parentFragment).openPhotoViewer(item.parentID, item.status, contentStatus.mediaAttachments.indexOf(item.attachment));
}
}
}

View File

@@ -10,8 +10,11 @@ import org.joinmastodon.android.model.Status;
import me.grishka.appkit.utils.BindableViewHolder;
public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
public ReblogOrReplyLineStatusDisplayItem(Status status){
super(status);
private CharSequence text;
public ReblogOrReplyLineStatusDisplayItem(String parentID, CharSequence text){
super(parentID);
this.text=text;
}
@Override
@@ -28,9 +31,7 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
@Override
public void onBind(ReblogOrReplyLineStatusDisplayItem item){
if(item.status.reblog!=null){
text.setText(itemView.getContext().getString(R.string.user_boosted, item.status.account.displayName));
}
text.setText(item.text);
}
}
}

View File

@@ -5,21 +5,22 @@ import android.app.Fragment;
import android.text.TextUtils;
import android.view.ViewGroup;
import org.joinmastodon.android.R;
import org.joinmastodon.android.model.Attachment;
import org.joinmastodon.android.model.DisplayItemsParent;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.ui.text.HtmlParser;
import java.util.ArrayList;
import java.util.List;
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
import me.grishka.appkit.utils.BindableViewHolder;
public abstract class StatusDisplayItem{
public final Status status;
public final String parentID;
public StatusDisplayItem(Status status){
this.status=status;
public StatusDisplayItem(String parentID){
this.parentID=parentID;
}
public abstract Type getType();
@@ -42,18 +43,19 @@ public abstract class StatusDisplayItem{
};
}
public static List<StatusDisplayItem> buildItems(Fragment fragment, Status status, String accountID){
public static ArrayList<StatusDisplayItem> buildItems(Fragment fragment, Status status, String accountID, DisplayItemsParent parentObject){
String parentID=parentObject.getID();
ArrayList<StatusDisplayItem> items=new ArrayList<>();
Status statusForContent=status.reblog==null ? status : status.reblog;
if(status.reblog!=null){
items.add(new ReblogOrReplyLineStatusDisplayItem(status));
items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment.getString(R.string.user_boosted, status.account.displayName)));
}
items.add(new HeaderStatusDisplayItem(status, statusForContent.account, statusForContent.createdAt, fragment, accountID));
items.add(new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID));
if(!TextUtils.isEmpty(statusForContent.content))
items.add(new TextStatusDisplayItem(status, HtmlParser.parse(statusForContent.content, statusForContent.emojis), fragment));
items.add(new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis), fragment));
for(Attachment attachment:statusForContent.mediaAttachments){
if(attachment.type==Attachment.Type.IMAGE){
items.add(new PhotoStatusDisplayItem(status, attachment, fragment));
items.add(new PhotoStatusDisplayItem(parentID, status, attachment, fragment));
}
}
return items;

View File

@@ -26,8 +26,8 @@ public class TextStatusDisplayItem extends StatusDisplayItem implements LinkSpan
private CharSequence text;
private ImageLoaderRequest[] emojiRequests;
private Fragment parentFragment;
public TextStatusDisplayItem(Status status, CharSequence text, Fragment parentFragment){
super(status);
public TextStatusDisplayItem(String parentID, CharSequence text, Fragment parentFragment){
super(parentID);
this.text=text;
this.parentFragment=parentFragment;
if(text instanceof Spanned){

View File

@@ -3,5 +3,5 @@ package org.joinmastodon.android.ui.photoviewer;
import org.joinmastodon.android.model.Status;
public interface PhotoViewerHost{
void openPhotoViewer(Status status, int attachmentIndex);
void openPhotoViewer(String parentID, Status status, int attachmentIndex);
}