Account timelines

This commit is contained in:
Grishka
2022-01-18 22:49:14 +03:00
parent ba75aa6d91
commit dc836b58f8
11 changed files with 107 additions and 10 deletions

View File

@@ -1,19 +1,24 @@
package org.joinmastodon.android.ui.displayitems;
import android.app.Activity;
import android.graphics.Bitmap;
import android.app.Fragment;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import org.joinmastodon.android.R;
import org.joinmastodon.android.fragments.ProfileFragment;
import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.Status;
import org.parceler.Parcels;
import java.time.Instant;
import me.grishka.appkit.Nav;
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
@@ -23,12 +28,16 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
private Account user;
private Instant createdAt;
private ImageLoaderRequest avaRequest;
private Fragment parentFragment;
private String accountID;
public HeaderStatusDisplayItem(Status status, Account user, Instant createdAt){
public HeaderStatusDisplayItem(Status status, Account user, Instant createdAt, Fragment parentFragment, String accountID){
super(status);
this.user=user;
this.createdAt=createdAt;
avaRequest=new UrlImageLoaderRequest(user.avatar);
this.parentFragment=parentFragment;
this.accountID=accountID;
}
@Override
@@ -54,6 +63,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
name=findViewById(R.id.name);
subtitle=findViewById(R.id.subtitle);
avatar=findViewById(R.id.avatar);
avatar.setOnClickListener(this::onAvaClick);
}
@Override
@@ -73,5 +83,12 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
public void clearImage(int index){
avatar.setImageBitmap(null);
}
private void onAvaClick(View v){
Bundle args=new Bundle();
args.putString("account", item.accountID);
args.putParcelable("profileAccount", Parcels.wrap(item.user));
Nav.go(item.parentFragment.getActivity(), ProfileFragment.class, args);
}
}
}

View File

@@ -42,13 +42,13 @@ public abstract class StatusDisplayItem{
};
}
public static List<StatusDisplayItem> buildItems(Fragment fragment, Status status){
public static List<StatusDisplayItem> buildItems(Fragment fragment, Status status, String accountID){
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 HeaderStatusDisplayItem(status, statusForContent.account, statusForContent.createdAt));
items.add(new HeaderStatusDisplayItem(status, statusForContent.account, statusForContent.createdAt, fragment, accountID));
if(!TextUtils.isEmpty(statusForContent.content))
items.add(new TextStatusDisplayItem(status, HtmlParser.parse(statusForContent.content, statusForContent.emojis), fragment));
for(Attachment attachment:statusForContent.mediaAttachments){