Loading app/src/main/java/app/fedilab/android/client/entities/app/Timeline.java +2 −0 Original line number Diff line number Diff line Loading @@ -378,6 +378,8 @@ public class Timeline { TREND_TAG("TREND_TAG"), @SerializedName("TREND_MESSAGE") TREND_MESSAGE("TREND_MESSAGE"), @SerializedName("PUBLIC_TREND_MESSAGE") PUBLIC_TREND_MESSAGE("PUBLIC_TREND_MESSAGE"), @SerializedName("STATUS_HISTORY") STATUS_HISTORY("STATUS_HISTORY"), @SerializedName("ACCOUNT_TIMELINE") Loading app/src/main/java/app/fedilab/android/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,8 @@ public class Helper { public static final String RECEIVE_REDRAW_PROFILE = "RECEIVE_REDRAW_PROFILE"; public static final String ARG_TIMELINE_TYPE = "ARG_TIMELINE_TYPE"; public static final String ARG_REMOTE_INSTANCE_STRING = "ARG_REMOTE_INSTANCE_STRING"; public static final String ARG_NOTIFICATION_TYPE = "ARG_NOTIFICATION_TYPE"; public static final String ARG_EXCLUDED_NOTIFICATION_TYPE = "ARG_EXCLUDED_NOTIFICATION_TYPE"; public static final String ARG_STATUS = "ARG_STATUS"; Loading app/src/main/java/app/fedilab/android/ui/drawer/InstanceRegAdapter.java +24 −16 Original line number Diff line number Diff line Loading @@ -38,9 +38,28 @@ import app.fedilab.android.helper.Helper; public class InstanceRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final List<JoinMastodonInstance> joinMastodonInstanceList; public RecyclerViewClickListener itemListener; private Context context; private ViewHolder holder; public ActionClick actionClick; @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { JoinMastodonInstance joinMastodonInstance = joinMastodonInstanceList.get(position); ViewHolder holder = (ViewHolder) viewHolder; holder.binding.instanceCountUser.setText(context.getString(R.string.users, Helper.withSuffix(joinMastodonInstance.total_users))); holder.binding.instanceDescription.setText(joinMastodonInstance.description); holder.binding.instanceHost.setText(joinMastodonInstance.domain); holder.binding.instanceVersion.setText(String.format("%s - %s", joinMastodonInstance.categories, joinMastodonInstance.version)); Glide.with(context) .load(joinMastodonInstance.proxied_thumbnail) .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(10))) .into(holder.binding.instancePp); holder.binding.getRoot().setOnClickListener(v -> actionClick.instance(position)); holder.binding.watchTrendig.setOnClickListener(v -> actionClick.trends(position)); } public InstanceRegAdapter(List<JoinMastodonInstance> joinMastodonInstanceList) { this.joinMastodonInstanceList = joinMastodonInstanceList; Loading @@ -62,21 +81,10 @@ public class InstanceRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo return new ViewHolder(itemBinding); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { JoinMastodonInstance joinMastodonInstance = joinMastodonInstanceList.get(position); holder = (ViewHolder) viewHolder; holder.binding.instanceCountUser.setText(context.getString(R.string.users, Helper.withSuffix(joinMastodonInstance.total_users))); holder.binding.instanceDescription.setText(joinMastodonInstance.description); holder.binding.instanceHost.setText(joinMastodonInstance.domain); holder.binding.instanceVersion.setText(String.format("%s - %s", joinMastodonInstance.categories, joinMastodonInstance.version)); Glide.with(context) .load(joinMastodonInstance.proxied_thumbnail) .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(10))) .into(holder.binding.instancePp); public interface ActionClick { void instance(int position); holder.binding.getRoot().setOnClickListener(v -> itemListener.recyclerViewListClicked(v, position)); void trends(int position); } public long getItemId(int position) { Loading app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginPickInstanceMastodon.java +20 −3 Original line number Diff line number Diff line Loading @@ -31,12 +31,14 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.JoinMastodonInstance; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.FragmentLoginPickInstanceMastodonBinding; import app.fedilab.android.helper.Helper; import app.fedilab.android.ui.drawer.InstanceRegAdapter; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline; import app.fedilab.android.viewmodel.mastodon.JoinInstancesVM; public class FragmentLoginPickInstanceMastodon extends Fragment implements InstanceRegAdapter.RecyclerViewClickListener { public class FragmentLoginPickInstanceMastodon extends Fragment implements InstanceRegAdapter.ActionClick { private List<JoinMastodonInstance> joinMastodonInstanceList; Loading Loading @@ -94,7 +96,7 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta joinMastodonInstanceList = instances; if (instances != null) { InstanceRegAdapter instanceRegAdapter = new InstanceRegAdapter(instances); instanceRegAdapter.itemListener = currentFragment; instanceRegAdapter.actionClick = currentFragment; LinearLayoutManager mLayoutManager = new LinearLayoutManager(requireActivity()); binding.regCategoryView.setLayoutManager(mLayoutManager); binding.regCategoryView.setNestedScrollingEnabled(false); Loading Loading @@ -122,7 +124,7 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta @Override public void recyclerViewListClicked(View v, int position) { public void instance(int position) { if (joinMastodonInstanceList != null) { JoinMastodonInstance clickedInstance = joinMastodonInstanceList.get(position); Bundle args = new Bundle(); Loading @@ -132,4 +134,19 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta args, null, FragmentLoginRegisterMastodon.class.getName()); } } @Override public void trends(int position) { if (joinMastodonInstanceList != null) { JoinMastodonInstance clickedInstance = joinMastodonInstanceList.get(position); Bundle args = new Bundle(); args.putBoolean(Helper.ARG_MINIFIED, true); args.putSerializable(Helper.ARG_REMOTE_INSTANCE_STRING, clickedInstance.domain); args.putSerializable(Helper.ARG_TIMELINE_TYPE, Timeline.TimeLineEnum.TREND_MESSAGE); Helper.addFragment( getParentFragmentManager(), android.R.id.content, new FragmentMastodonTimeline(), args, null, FragmentLoginRegisterMastodon.class.getName()); } } } No newline at end of file app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java +15 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. private String slug; private boolean canBeFederated; private boolean rememberPosition; private String publicTrendsDomain; //Allow to recreate data when detaching/attaching fragment public void recreate() { Loading Loading @@ -298,6 +299,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. canBeFederated = false; } } publicTrendsDomain = getArguments().getString(Helper.ARG_REMOTE_INSTANCE_STRING, null); isViewInitialized = getArguments().getBoolean(Helper.ARG_INITIALIZE_VIEW, true); tagTimeline = (TagTimeline) getArguments().getSerializable(Helper.ARG_TAG_TIMELINE); accountTimeline = (Account) getArguments().getSerializable(Helper.ARG_ACCOUNT); Loading Loading @@ -986,6 +988,19 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. initializeStatusesCommonView(statuses); }); } } else if (timelineType == Timeline.TimeLineEnum.PUBLIC_TREND_MESSAGE) { if (direction == null) { timelinesVM.getStatusTrends(null, publicTrendsDomain) .observe(getViewLifecycleOwner(), statusesTrends -> { Statuses statuses = new Statuses(); statuses.statuses = new ArrayList<>(); if (statusesTrends != null) { statuses.statuses.addAll(statusesTrends); } statuses.pagination = new Pagination(); initializeStatusesCommonView(statuses); }); } } } Loading Loading
app/src/main/java/app/fedilab/android/client/entities/app/Timeline.java +2 −0 Original line number Diff line number Diff line Loading @@ -378,6 +378,8 @@ public class Timeline { TREND_TAG("TREND_TAG"), @SerializedName("TREND_MESSAGE") TREND_MESSAGE("TREND_MESSAGE"), @SerializedName("PUBLIC_TREND_MESSAGE") PUBLIC_TREND_MESSAGE("PUBLIC_TREND_MESSAGE"), @SerializedName("STATUS_HISTORY") STATUS_HISTORY("STATUS_HISTORY"), @SerializedName("ACCOUNT_TIMELINE") Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -213,6 +213,8 @@ public class Helper { public static final String RECEIVE_REDRAW_PROFILE = "RECEIVE_REDRAW_PROFILE"; public static final String ARG_TIMELINE_TYPE = "ARG_TIMELINE_TYPE"; public static final String ARG_REMOTE_INSTANCE_STRING = "ARG_REMOTE_INSTANCE_STRING"; public static final String ARG_NOTIFICATION_TYPE = "ARG_NOTIFICATION_TYPE"; public static final String ARG_EXCLUDED_NOTIFICATION_TYPE = "ARG_EXCLUDED_NOTIFICATION_TYPE"; public static final String ARG_STATUS = "ARG_STATUS"; Loading
app/src/main/java/app/fedilab/android/ui/drawer/InstanceRegAdapter.java +24 −16 Original line number Diff line number Diff line Loading @@ -38,9 +38,28 @@ import app.fedilab.android.helper.Helper; public class InstanceRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final List<JoinMastodonInstance> joinMastodonInstanceList; public RecyclerViewClickListener itemListener; private Context context; private ViewHolder holder; public ActionClick actionClick; @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { JoinMastodonInstance joinMastodonInstance = joinMastodonInstanceList.get(position); ViewHolder holder = (ViewHolder) viewHolder; holder.binding.instanceCountUser.setText(context.getString(R.string.users, Helper.withSuffix(joinMastodonInstance.total_users))); holder.binding.instanceDescription.setText(joinMastodonInstance.description); holder.binding.instanceHost.setText(joinMastodonInstance.domain); holder.binding.instanceVersion.setText(String.format("%s - %s", joinMastodonInstance.categories, joinMastodonInstance.version)); Glide.with(context) .load(joinMastodonInstance.proxied_thumbnail) .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(10))) .into(holder.binding.instancePp); holder.binding.getRoot().setOnClickListener(v -> actionClick.instance(position)); holder.binding.watchTrendig.setOnClickListener(v -> actionClick.trends(position)); } public InstanceRegAdapter(List<JoinMastodonInstance> joinMastodonInstanceList) { this.joinMastodonInstanceList = joinMastodonInstanceList; Loading @@ -62,21 +81,10 @@ public class InstanceRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo return new ViewHolder(itemBinding); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { JoinMastodonInstance joinMastodonInstance = joinMastodonInstanceList.get(position); holder = (ViewHolder) viewHolder; holder.binding.instanceCountUser.setText(context.getString(R.string.users, Helper.withSuffix(joinMastodonInstance.total_users))); holder.binding.instanceDescription.setText(joinMastodonInstance.description); holder.binding.instanceHost.setText(joinMastodonInstance.domain); holder.binding.instanceVersion.setText(String.format("%s - %s", joinMastodonInstance.categories, joinMastodonInstance.version)); Glide.with(context) .load(joinMastodonInstance.proxied_thumbnail) .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(10))) .into(holder.binding.instancePp); public interface ActionClick { void instance(int position); holder.binding.getRoot().setOnClickListener(v -> itemListener.recyclerViewListClicked(v, position)); void trends(int position); } public long getItemId(int position) { Loading
app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginPickInstanceMastodon.java +20 −3 Original line number Diff line number Diff line Loading @@ -31,12 +31,14 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.JoinMastodonInstance; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.FragmentLoginPickInstanceMastodonBinding; import app.fedilab.android.helper.Helper; import app.fedilab.android.ui.drawer.InstanceRegAdapter; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline; import app.fedilab.android.viewmodel.mastodon.JoinInstancesVM; public class FragmentLoginPickInstanceMastodon extends Fragment implements InstanceRegAdapter.RecyclerViewClickListener { public class FragmentLoginPickInstanceMastodon extends Fragment implements InstanceRegAdapter.ActionClick { private List<JoinMastodonInstance> joinMastodonInstanceList; Loading Loading @@ -94,7 +96,7 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta joinMastodonInstanceList = instances; if (instances != null) { InstanceRegAdapter instanceRegAdapter = new InstanceRegAdapter(instances); instanceRegAdapter.itemListener = currentFragment; instanceRegAdapter.actionClick = currentFragment; LinearLayoutManager mLayoutManager = new LinearLayoutManager(requireActivity()); binding.regCategoryView.setLayoutManager(mLayoutManager); binding.regCategoryView.setNestedScrollingEnabled(false); Loading Loading @@ -122,7 +124,7 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta @Override public void recyclerViewListClicked(View v, int position) { public void instance(int position) { if (joinMastodonInstanceList != null) { JoinMastodonInstance clickedInstance = joinMastodonInstanceList.get(position); Bundle args = new Bundle(); Loading @@ -132,4 +134,19 @@ public class FragmentLoginPickInstanceMastodon extends Fragment implements Insta args, null, FragmentLoginRegisterMastodon.class.getName()); } } @Override public void trends(int position) { if (joinMastodonInstanceList != null) { JoinMastodonInstance clickedInstance = joinMastodonInstanceList.get(position); Bundle args = new Bundle(); args.putBoolean(Helper.ARG_MINIFIED, true); args.putSerializable(Helper.ARG_REMOTE_INSTANCE_STRING, clickedInstance.domain); args.putSerializable(Helper.ARG_TIMELINE_TYPE, Timeline.TimeLineEnum.TREND_MESSAGE); Helper.addFragment( getParentFragmentManager(), android.R.id.content, new FragmentMastodonTimeline(), args, null, FragmentLoginRegisterMastodon.class.getName()); } } } No newline at end of file
app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java +15 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. private String slug; private boolean canBeFederated; private boolean rememberPosition; private String publicTrendsDomain; //Allow to recreate data when detaching/attaching fragment public void recreate() { Loading Loading @@ -298,6 +299,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. canBeFederated = false; } } publicTrendsDomain = getArguments().getString(Helper.ARG_REMOTE_INSTANCE_STRING, null); isViewInitialized = getArguments().getBoolean(Helper.ARG_INITIALIZE_VIEW, true); tagTimeline = (TagTimeline) getArguments().getSerializable(Helper.ARG_TAG_TIMELINE); accountTimeline = (Account) getArguments().getSerializable(Helper.ARG_ACCOUNT); Loading Loading @@ -986,6 +988,19 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. initializeStatusesCommonView(statuses); }); } } else if (timelineType == Timeline.TimeLineEnum.PUBLIC_TREND_MESSAGE) { if (direction == null) { timelinesVM.getStatusTrends(null, publicTrendsDomain) .observe(getViewLifecycleOwner(), statusesTrends -> { Statuses statuses = new Statuses(); statuses.statuses = new ArrayList<>(); if (statusesTrends != null) { statuses.statuses.addAll(statusesTrends); } statuses.pagination = new Pagination(); initializeStatusesCommonView(statuses); }); } } } Loading