summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-03-20 18:23:39 +0100
committerThomas <tschneider.ac@gmail.com>2023-03-20 18:23:39 +0100
commit3da5cdf7030c07d07fefd72295b4a75980fc093b (patch)
tree70e181f6e51baeb4bf7452917667013f1e04107f
parentb6a8df9410900fe6698f86586ff1f97493bba040 (diff)
Some layouts improvements
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/drawer/PeertubeAdapter.java556
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/helper/Helper.java10
-rw-r--r--app/src/main/res/layouts/peertube/layout/drawer_peertube.xml27
-rw-r--r--app/src/main/res/layouts/peertube/layout/drawer_peertube_list.xml188
4 files changed, 586 insertions, 195 deletions
diff --git a/app/src/main/java/app/fedilab/android/peertube/drawer/PeertubeAdapter.java b/app/src/main/java/app/fedilab/android/peertube/drawer/PeertubeAdapter.java
index d9c79af45..fa39fe001 100644
--- a/app/src/main/java/app/fedilab/android/peertube/drawer/PeertubeAdapter.java
+++ b/app/src/main/java/app/fedilab/android/peertube/drawer/PeertubeAdapter.java
@@ -59,6 +59,7 @@ import java.util.Map;
import app.fedilab.android.R;
import app.fedilab.android.databinding.DrawerPeertubeBinding;
+import app.fedilab.android.databinding.DrawerPeertubeListBinding;
import app.fedilab.android.peertube.activities.PeertubeActivity;
import app.fedilab.android.peertube.activities.PeertubeEditUploadActivity;
import app.fedilab.android.peertube.activities.ShowChannelActivity;
@@ -90,6 +91,22 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
private ChannelData.Channel forChannel;
private AccountData.PeertubeAccount forAccount;
+ @NonNull
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ context = parent.getContext();
+ SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean videoInList = sharedpreferences.getBoolean(context.getString(R.string.set_video_in_list_choice), false);
+ if (videoInList) {
+ DrawerPeertubeListBinding itemBinding = DrawerPeertubeListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new VideoListViewHolder(itemBinding);
+ } else {
+ DrawerPeertubeBinding itemBinding = DrawerPeertubeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new VideoViewHolder(itemBinding);
+ }
+
+ }
+
public PeertubeAdapter(List<VideoData.Video> videos, TimelineVM.TimelineType timelineType, boolean sepiaSearch, ChannelData.Channel forChannel, AccountData.PeertubeAccount forAccount) {
this.videos = videos;
this.timelineType = timelineType;
@@ -103,221 +120,402 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
this.videos = videos;
}
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- context = parent.getContext();
- DrawerPeertubeBinding itemBinding = DrawerPeertubeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
- return new ViewHolder(itemBinding);
- }
-
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
-
-
- final ViewHolder holder = (ViewHolder) viewHolder;
- final VideoData.Video video = videos.get(position);
-
- if (video == null) {
- return;
- }
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
-
boolean videoInList = sharedpreferences.getBoolean(context.getString(R.string.set_video_in_list_choice), false);
+ if (videoInList) {
+ final VideoListViewHolder holder = (VideoListViewHolder) viewHolder;
+ final VideoData.Video video = videos.get(position);
- boolean ownVideos;
- if (timelineType == TimelineVM.TimelineType.MY_VIDEOS) {
- ownVideos = true;
- } else {
- ownVideos = Helper.isVideoOwner(context, video);
- }
+ if (video == null) {
+ return;
+ }
+ boolean ownVideos;
+ if (timelineType == TimelineVM.TimelineType.MY_VIDEOS) {
+ ownVideos = true;
+ } else {
+ ownVideos = Helper.isVideoOwner(context, video);
+ }
- String instance = null;
- if (sepiaSearch) {
- instance = video.getAccount().getHost();
- } else if (forChannel != null) {
- instance = forChannel.getHost();
- } else if (forAccount != null) {
- instance = forAccount.getHost();
- }
- holder.binding.peertubeDisplayname.setText(video.getChannel().getDisplayName());
- holder.binding.peertubeUsername.setText(video.getChannel().getAcct());
- Helper.loadAvatar(context, video.getChannel(), holder.binding.peertubeChannelAvatar);
- holder.binding.peertubeTitle.setText(video.getName());
- if (video.isLive()) {
- holder.binding.peertubeDuration.setText(R.string.live);
- holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_live);
- } else {
- holder.binding.peertubeDuration.setText(Helper.secondsToString(video.getDuration()));
- holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_corner);
- }
+ String instance = null;
+ if (sepiaSearch) {
+ instance = video.getAccount().getHost();
+ } else if (forChannel != null) {
+ instance = forChannel.getHost();
+ } else if (forAccount != null) {
+ instance = forAccount.getHost();
+ }
+ holder.binding.peertubeDisplayname.setText(video.getChannel().getDisplayName());
+ holder.binding.peertubeUsername.setText(video.getChannel().getAcct());
+ Helper.loadAvatar(context, video.getChannel(), holder.binding.peertubeChannelAvatar);
+ holder.binding.peertubeTitle.setText(video.getName());
+ if (video.isLive()) {
+ holder.binding.peertubeDuration.setText(R.string.live);
+ holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_live);
+ } else {
+ holder.binding.peertubeDuration.setText(Helper.secondsToString(video.getDuration()));
+ holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_corner);
+ }
- holder.binding.peertubeDate.setText(String.format(" - %s", Helper.dateDiff(context, video.getCreatedAt())));
- holder.binding.peertubeViews.setText(context.getString(R.string.number_view_video, Helper.withSuffix(video.getViews())));
- boolean blur = sharedpreferences.getString(context.getString(R.string.set_video_sensitive_choice), Helper.BLUR).compareTo("blur") == 0 && video.isNsfw();
- if (videoInList) {
- Helper.loadGiF(context, instance, video.getThumbnailPath(), holder.binding.peertubeVideoImageSmall, blur);
- holder.binding.peertubeVideoImageSmall.setVisibility(View.VISIBLE);
- holder.binding.previewContainer.setVisibility(View.GONE);
- } else {
+ holder.binding.peertubeDate.setText(String.format(" - %s", Helper.dateDiffFull(video.getCreatedAt())));
+ holder.binding.peertubeViews.setText(context.getString(R.string.number_view_video, Helper.withSuffix(video.getViews())));
+
+ boolean blur = sharedpreferences.getString(context.getString(R.string.set_video_sensitive_choice), Helper.BLUR).compareTo("blur") == 0 && video.isNsfw();
loadImage(holder.binding.peertubeVideoImage, instance, video.getPreviewPath(), video.getThumbnailPath(), blur);
- holder.binding.peertubeVideoImageSmall.setVisibility(View.GONE);
holder.binding.previewContainer.setVisibility(View.VISIBLE);
- }
- //For Overview Videos: boolean values for displaying title is managed in the fragment
- if (video.isHasTitle()) {
- holder.binding.headerTitle.setVisibility(View.VISIBLE);
- switch (video.getTitleType()) {
- case TAG:
- holder.binding.headerTitle.setText(String.format("#%s", video.getTitle()));
- break;
- case CHANNEL:
- case CATEGORY:
- holder.binding.headerTitle.setText(String.format("%s", video.getTitle()));
- break;
+ //For Overview Videos: boolean values for displaying title is managed in the fragment
+ if (video.isHasTitle()) {
+ holder.binding.headerTitle.setVisibility(View.VISIBLE);
+ switch (video.getTitleType()) {
+ case TAG:
+ holder.binding.headerTitle.setText(String.format("#%s", video.getTitle()));
+ break;
+ case CHANNEL:
+ case CATEGORY:
+ holder.binding.headerTitle.setText(String.format("%s", video.getTitle()));
+ break;
+ }
+ } else {
+ holder.binding.headerTitle.setVisibility(View.GONE);
}
- } else {
- holder.binding.headerTitle.setVisibility(View.GONE);
- }
- if (!ownVideos) {
- holder.binding.peertubeChannelInfo.setOnClickListener(v -> {
- Intent intent = new Intent(context, ShowChannelActivity.class);
+ if (!ownVideos) {
+ holder.binding.peertubeChannelInfo.setOnClickListener(v -> {
+ Intent intent = new Intent(context, ShowChannelActivity.class);
+ Bundle b = new Bundle();
+ b.putSerializable("channel", video.getChannel());
+ b.putBoolean("sepia_search", sepiaSearch || forChannel != null);
+ if (sepiaSearch || forChannel != null) {
+ b.putString("peertube_instance", video.getAccount().getHost());
+ }
+ intent.putExtras(b);
+ context.startActivity(intent);
+ });
+ }
+
+
+ holder.binding.moreActions.setOnClickListener(view -> {
+ PopupMenu popup = new PopupMenu(context, holder.binding.moreActions);
+ popup.getMenuInflater()
+ .inflate(R.menu.video_drawer_menu_peertube, popup.getMenu());
+ if (timelineType == MY_VIDEOS) {
+ popup.getMenu().findItem(R.id.action_report).setVisible(false);
+ popup.getMenu().findItem(R.id.action_follow).setVisible(false);
+ } else {
+ popup.getMenu().findItem(R.id.action_edit).setVisible(false);
+ if (relationShipListener == null || relationShipListener.getRelationShip() == null || relationShipListener.getRelationShip().size() == 0) {
+ popup.getMenu().findItem(R.id.action_follow).setVisible(false);
+ } else {
+ popup.getMenu().findItem(R.id.action_follow).setVisible(true);
+ if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
+ } else {
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
+ }
+ }
+ }
+ popup.getMenu().findItem(R.id.action_playlist).setVisible(playlistListener != null && playlistListener.getPlaylist() != null && playlistListener.getPlaylist().size() != 0);
+ popup.setOnMenuItemClickListener(item -> {
+ int itemId = item.getItemId();
+ if (itemId == R.id.action_follow) {
+ if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
+ relationShipListener.getRelationShip().put(video.getChannel().getAcct(), false);
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
+ boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
+ if (confirm_unfollow) {
+ AlertDialog.Builder unfollowConfirm = new MaterialAlertDialogBuilder(context);
+ unfollowConfirm.setTitle(context.getString(R.string.unfollow_confirm));
+ unfollowConfirm.setMessage(video.getChannel().getAcct());
+ unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
+ unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
+ dialog.dismiss();
+ });
+ unfollowConfirm.show();
+ } else {
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
+ }
+ } else {
+ relationShipListener.getRelationShip().put(video.getChannel().getAcct(), true);
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ viewModel.post(FOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
+ }
+ } else if (itemId == R.id.action_playlist) {
+ PlaylistsVM viewModelOwnerPlaylist = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
+ viewModelOwnerPlaylist.manage(PlaylistsVM.action.GET_PLAYLISTS, null, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(video, apiResponse));
+ } else if (itemId == R.id.action_edit) {
+ Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
+ Bundle b = new Bundle();
+ b.putString("video_id", video.getUuid());
+ intent.putExtras(b);
+ context.startActivity(intent);
+ } else if (itemId == R.id.action_report) {
+ AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(context);
+ LayoutInflater inflater1 = ((Activity) context).getLayoutInflater();
+ View dialogView = inflater1.inflate(R.layout.popup_report_peertube, new LinearLayout(context), false);
+ dialogBuilder.setView(dialogView);
+ EditText report_content = dialogView.findViewById(R.id.report_content);
+ dialogBuilder.setNeutralButton(R.string.cancel, (dialog2, id) -> dialog2.dismiss());
+ dialogBuilder.setPositiveButton(R.string.report, (dialog2, id) -> {
+ if (report_content.getText().toString().trim().length() == 0) {
+ Toasty.info(context, context.getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
+ } else {
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ Report report = new Report();
+ Report.VideoReport videoReport = new Report.VideoReport();
+ videoReport.setId(video.getId());
+ report.setVideo(videoReport);
+ report.setReason(report_content.getText().toString());
+ viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_VIDEO, apiResponse));
+ dialog2.dismiss();
+ }
+ });
+ AlertDialog alertDialog2 = dialogBuilder.create();
+ alertDialog2.show();
+ }
+ return true;
+ });
+ popup.show();
+ });
+ holder.binding.peertubeVideoInfo.setOnClickListener(v -> {
+ Intent intent = new Intent(context, PeertubeActivity.class);
Bundle b = new Bundle();
- b.putSerializable("channel", video.getChannel());
- b.putBoolean("sepia_search", sepiaSearch || forChannel != null);
- if (sepiaSearch || forChannel != null) {
+ b.putString("video_id", video.getId());
+ b.putString("video_uuid", video.getUuid());
+ b.putBoolean("isMyVideo", ownVideos);
+ b.putBoolean("sepia_search", sepiaSearch);
+ b.putSerializable("video", video);
+ if (sepiaSearch) {
b.putString("peertube_instance", video.getAccount().getHost());
}
intent.putExtras(b);
context.startActivity(intent);
});
- }
+ holder.binding.peertubeVideoImage.setOnClickListener(v -> {
+ Intent intent = new Intent(context, PeertubeActivity.class);
+ Bundle b = new Bundle();
+ b.putString("video_id", video.getId());
+ b.putSerializable("video", video);
+ b.putString("video_uuid", video.getUuid());
+ b.putBoolean("isMyVideo", ownVideos);
+ b.putBoolean("sepia_search", sepiaSearch);
+ if (sepiaSearch) {
+ b.putString("peertube_instance", video.getAccount().getHost());
+ }
+ intent.putExtras(b);
+ context.startActivity(intent);
+ });
+ } else {
+ final VideoViewHolder holder = (VideoViewHolder) viewHolder;
+ final VideoData.Video video = videos.get(position);
+
+ if (video == null) {
+ return;
+ }
+
+ boolean ownVideos;
+ if (timelineType == TimelineVM.TimelineType.MY_VIDEOS) {
+ ownVideos = true;
+ } else {
+ ownVideos = Helper.isVideoOwner(context, video);
+ }
+
+ String instance = null;
+ if (sepiaSearch) {
+ instance = video.getAccount().getHost();
+ } else if (forChannel != null) {
+ instance = forChannel.getHost();
+ } else if (forAccount != null) {
+ instance = forAccount.getHost();
+ }
- holder.binding.moreActions.setOnClickListener(view -> {
- PopupMenu popup = new PopupMenu(context, holder.binding.moreActions);
- popup.getMenuInflater()
- .inflate(R.menu.video_drawer_menu_peertube, popup.getMenu());
- if (timelineType == MY_VIDEOS) {
- popup.getMenu().findItem(R.id.action_report).setVisible(false);
- popup.getMenu().findItem(R.id.action_follow).setVisible(false);
+ holder.binding.peertubeDisplayname.setText(video.getChannel().getDisplayName());
+ holder.binding.peertubeUsername.setText(video.getChannel().getAcct());
+ Helper.loadAvatar(context, video.getChannel(), holder.binding.peertubeChannelAvatar);
+ holder.binding.peertubeTitle.setText(video.getName());
+ if (video.isLive()) {
+ holder.binding.peertubeDuration.setText(R.string.live);
+ holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_live);
} else {
- popup.getMenu().findItem(R.id.action_edit).setVisible(false);
- if (relationShipListener == null || relationShipListener.getRelationShip() == null || relationShipListener.getRelationShip().size() == 0) {
+ holder.binding.peertubeDuration.setText(Helper.secondsToString(video.getDuration()));
+ holder.binding.peertubeDuration.setBackgroundResource(R.drawable.rounded_corner);
+ }
+
+
+ holder.binding.peertubeDate.setText(String.format(" - %s", Helper.dateDiffFull(video.getCreatedAt())));
+ holder.binding.peertubeViews.setText(context.getString(R.string.number_view_video, Helper.withSuffix(video.getViews())));
+
+ boolean blur = sharedpreferences.getString(context.getString(R.string.set_video_sensitive_choice), Helper.BLUR).compareTo("blur") == 0 && video.isNsfw();
+ loadImage(holder.binding.peertubeVideoImage, instance, video.getPreviewPath(), video.getThumbnailPath(), blur);
+ holder.binding.previewContainer.setVisibility(View.VISIBLE);
+
+ //For Overview Videos: boolean values for displaying title is managed in the fragment
+ if (video.isHasTitle()) {
+ holder.binding.headerTitle.setVisibility(View.VISIBLE);
+ switch (video.getTitleType()) {
+ case TAG:
+ holder.binding.headerTitle.setText(String.format("#%s", video.getTitle()));
+ break;
+ case CHANNEL:
+ case CATEGORY:
+ holder.binding.headerTitle.setText(String.format("%s", video.getTitle()));
+ break;
+ }
+ } else {
+ holder.binding.headerTitle.setVisibility(View.GONE);
+ }
+
+ if (!ownVideos) {
+ holder.binding.peertubeChannelInfo.setOnClickListener(v -> {
+ Intent intent = new Intent(context, ShowChannelActivity.class);
+ Bundle b = new Bundle();
+ b.putSerializable("channel", video.getChannel());
+ b.putBoolean("sepia_search", sepiaSearch || forChannel != null);
+ if (sepiaSearch || forChannel != null) {
+ b.putString("peertube_instance", video.getAccount().getHost());
+ }
+ intent.putExtras(b);
+ context.startActivity(intent);
+ });
+ }
+
+
+ holder.binding.moreActions.setOnClickListener(view -> {
+ PopupMenu popup = new PopupMenu(context, holder.binding.moreActions);
+ popup.getMenuInflater()
+ .inflate(R.menu.video_drawer_menu_peertube, popup.getMenu());
+ if (timelineType == MY_VIDEOS) {
+ popup.getMenu().findItem(R.id.action_report).setVisible(false);
popup.getMenu().findItem(R.id.action_follow).setVisible(false);
} else {
- popup.getMenu().findItem(R.id.action_follow).setVisible(true);
- if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
- popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
+ popup.getMenu().findItem(R.id.action_edit).setVisible(false);
+ if (relationShipListener == null || relationShipListener.getRelationShip() == null || relationShipListener.getRelationShip().size() == 0) {
+ popup.getMenu().findItem(R.id.action_follow).setVisible(false);
} else {
- popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
+ popup.getMenu().findItem(R.id.action_follow).setVisible(true);
+ if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
+ } else {
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
+ }
}
}
- }
- popup.getMenu().findItem(R.id.action_playlist).setVisible(playlistListener != null && playlistListener.getPlaylist() != null && playlistListener.getPlaylist().size() != 0);
- popup.setOnMenuItemClickListener(item -> {
- int itemId = item.getItemId();
- if (itemId == R.id.action_follow) {
- if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
- relationShipListener.getRelationShip().put(video.getChannel().getAcct(), false);
- popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
- boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
- if (confirm_unfollow) {
- AlertDialog.Builder unfollowConfirm = new MaterialAlertDialogBuilder(context);
- unfollowConfirm.setTitle(context.getString(R.string.unfollow_confirm));
- unfollowConfirm.setMessage(video.getChannel().getAcct());
- unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
- unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
+ popup.getMenu().findItem(R.id.action_playlist).setVisible(playlistListener != null && playlistListener.getPlaylist() != null && playlistListener.getPlaylist().size() != 0);
+ popup.setOnMenuItemClickListener(item -> {
+ int itemId = item.getItemId();
+ if (itemId == R.id.action_follow) {
+ if (relationShipListener.getRelationShip().containsKey(video.getChannel().getAcct()) && relationShipListener.getRelationShip().get(video.getChannel().getAcct())) {
+ relationShipListener.getRelationShip().put(video.getChannel().getAcct(), false);
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_follow));
+ boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
+ if (confirm_unfollow) {
+ AlertDialog.Builder unfollowConfirm = new MaterialAlertDialogBuilder(context);
+ unfollowConfirm.setTitle(context.getString(R.string.unfollow_confirm));
+ unfollowConfirm.setMessage(video.getChannel().getAcct());
+ unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
+ unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
+ dialog.dismiss();
+ });
+ unfollowConfirm.show();
+ } else {
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
- dialog.dismiss();
- });
- unfollowConfirm.show();
+ }
} else {
+ relationShipListener.getRelationShip().put(video.getChannel().getAcct(), true);
+ popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
- viewModel.post(UNFOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(UNFOLLOW, apiResponse));
+ viewModel.post(FOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
}
- } else {
- relationShipListener.getRelationShip().put(video.getChannel().getAcct(), true);
- popup.getMenu().findItem(R.id.action_follow).setTitle(context.getString(R.string.action_unfollow));
- PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
- viewModel.post(FOLLOW, video.getChannel().getAcct(), null).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(FOLLOW, apiResponse));
+ } else if (itemId == R.id.action_playlist) {
+ PlaylistsVM viewModelOwnerPlaylist = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
+ viewModelOwnerPlaylist.manage(PlaylistsVM.action.GET_PLAYLISTS, null, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(video, apiResponse));
+ } else if (itemId == R.id.action_edit) {
+ Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
+ Bundle b = new Bundle();
+ b.putString("video_id", video.getUuid());
+ intent.putExtras(b);
+ context.startActivity(intent);
+ } else if (itemId == R.id.action_report) {
+ AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(context);
+ LayoutInflater inflater1 = ((Activity) context).getLayoutInflater();
+ View dialogView = inflater1.inflate(R.layout.popup_report_peertube, new LinearLayout(context), false);
+ dialogBuilder.setView(dialogView);
+ EditText report_content = dialogView.findViewById(R.id.report_content);
+ dialogBuilder.setNeutralButton(R.string.cancel, (dialog2, id) -> dialog2.dismiss());
+ dialogBuilder.setPositiveButton(R.string.report, (dialog2, id) -> {
+ if (report_content.getText().toString().trim().length() == 0) {
+ Toasty.info(context, context.getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
+ } else {
+ PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
+ Report report = new Report();
+ Report.VideoReport videoReport = new Report.VideoReport();
+ videoReport.setId(video.getId());
+ report.setVideo(videoReport);
+ report.setReason(report_content.getText().toString());
+ viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_VIDEO, apiResponse));
+ dialog2.dismiss();
+ }
+ });
+ AlertDialog alertDialog2 = dialogBuilder.create();
+ alertDialog2.show();
}
- } else if (itemId == R.id.action_playlist) {
- PlaylistsVM viewModelOwnerPlaylist = new ViewModelProvider((ViewModelStoreOwner) context).get(PlaylistsVM.class);
- viewModelOwnerPlaylist.manage(PlaylistsVM.action.GET_PLAYLISTS, null, null).observe((LifecycleOwner) context, apiResponse -> manageVIewPlaylists(video, apiResponse));
- } else if (itemId == R.id.action_edit) {
- Intent intent = new Intent(context, PeertubeEditUploadActivity.class);
- Bundle b = new Bundle();
- b.putString("video_id", video.getUuid());
- intent.putExtras(b);
- context.startActivity(intent);
- } else if (itemId == R.id.action_report) {
- AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(context);
- LayoutInflater inflater1 = ((Activity) context).getLayoutInflater();
- View dialogView = inflater1.inflate(R.layout.popup_report_peertube, new LinearLayout(context), false);
- dialogBuilder.setView(dialogView);
- EditText report_content = dialogView.findViewById(R.id.report_content);
- dialogBuilder.setNeutralButton(R.string.cancel, (dialog2, id) -> dialog2.dismiss());
- dialogBuilder.setPositiveButton(R.string.report, (dialog2, id) -> {
- if (report_content.getText().toString().trim().length() == 0) {
- Toasty.info(context, context.getString(R.string.report_comment_size), Toasty.LENGTH_LONG).show();
- } else {
- PostActionsVM viewModel = new ViewModelProvider((ViewModelStoreOwner) context).get(PostActionsVM.class);
- Report report = new Report();
- Report.VideoReport videoReport = new Report.VideoReport();
- videoReport.setId(video.getId());
- report.setVideo(videoReport);
- report.setReason(report_content.getText().toString());
- viewModel.report(report).observe((LifecycleOwner) context, apiResponse -> manageVIewPostActions(RetrofitPeertubeAPI.ActionType.REPORT_VIDEO, apiResponse));
- dialog2.dismiss();
- }
- });
- AlertDialog alertDialog2 = dialogBuilder.create();
- alertDialog2.show();
+ return true;
+ });
+ popup.show();
+ });
+ holder.binding.peertubeVideoInfo.setOnClickListener(v -> {
+ Intent intent = new Intent(context, PeertubeActivity.class);
+ Bundle b = new Bundle();
+ b.putString("video_id", video.getId());
+ b.putString("video_uuid", video.getUuid());
+ b.putBoolean("isMyVideo", ownVideos);
+ b.putBoolean("sepia_search", sepiaSearch);
+ b.putSerializable("video", video);
+ if (sepiaSearch) {
+ b.putString("peertube_instance", video.getAccount().getHost());
}
- return true;
+ intent.putExtras(b);
+ context.startActivity(intent);
});
- popup.show();
- });
- holder.binding.peertubeVideoInfo.setOnClickListener(v -> {
- Intent intent = new Intent(context, PeertubeActivity.class);
- Bundle b = new Bundle();
- b.putString("video_id", video.getId());
- b.putString("video_uuid", video.getUuid());
- b.putBoolean("isMyVideo", ownVideos);
- b.putBoolean("sepia_search", sepiaSearch);
- b.putSerializable("video", video);
- if (sepiaSearch) {
- b.putString("peertube_instance", video.getAccount().getHost());
- }
- intent.putExtras(b);
- context.startActivity(intent);
- });
- holder.binding.peertubeVideoImage.setOnClickListener(v -> {
- Intent intent = new Intent(context, PeertubeActivity.class);
- Bundle b = new Bundle();
- b.putString("video_id", video.getId());
- b.putSerializable("video", video);
- b.putString("video_uuid", video.getUuid());
- b.putBoolean("isMyVideo", ownVideos);
- b.putBoolean("sepia_search", sepiaSearch);
- if (sepiaSearch) {
- b.putString("peertube_instance", video.getAccount().getHost());
- }
- intent.putExtras(b);
- context.startActivity(intent);
- });
+ holder.binding.peertubeVideoImage.setOnClickListener(v -> {
+ Intent intent = new Intent(context, PeertubeActivity.class);
+ Bundle b = new Bundle();
+ b.putString("video_id", video.getId());
+ b.putSerializable("video", video);
+ b.putString("video_uuid", video.getUuid());
+ b.putBoolean("isMyVideo", ownVideos);
+ b.putBoolean("sepia_search", sepiaSearch);
+ if (sepiaSearch) {
+ b.putString("peertube_instance", video.getAccount().getHost());
+ }
+ intent.putExtras(b);
+ context.startActivity(intent);
+ });
+ }
+
}
+ enum typeOfTimeline {
+ CLASSIC,
+ LIST
+ }
+
+
public void manageVIewPlaylists(VideoData.Video video, APIResponse apiResponse) {
if (apiResponse.getError() != null) {
return;
@@ -477,14 +675,22 @@ public class PeertubeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
Map<String, List<PlaylistExist>> getPlaylist();
}
- static class ViewHolder extends RecyclerView.ViewHolder {
+ static class VideoViewHolder extends RecyclerView.ViewHolder {
DrawerPeertubeBinding binding;
- ViewHolder(DrawerPeertubeBinding itemView) {
+ VideoViewHolder(DrawerPeertubeBinding itemView) {
super(itemView.getRoot());
binding = itemView;
}
}
+ static class VideoListViewHolder extends RecyclerView.ViewHolder {
+ DrawerPeertubeListBinding binding;
+
+ VideoListViewHolder(DrawerPeertubeListBinding itemView) {
+ super(itemView.getRoot());
+ binding = itemView;
+ }
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/app/fedilab/android/peertube/helper/Helper.java b/app/src/main/java/app/fedilab/android/peertube/helper/Helper.java
index a891474fa..47eda9665 100644
--- a/app/src/main/java/app/fedilab/android/peertube/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/android/peertube/helper/Helper.java
@@ -216,6 +216,16 @@ public class Helper {
return String.format(Locale.getDefault(), "%s:%s", strMin, strSec);
}
+
+ public static String dateDiffFull(Date dateToot) {
+ SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.getDefault());
+ try {
+ return df.format(dateToot);
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
/***
* Returns a String depending of the date
* @param context Context
diff --git a/app/src/main/res/layouts/peertube/layout/drawer_peertube.xml b/app/src/main/res/layouts/peertube/layout/drawer_peertube.xml
index 634300e1b..053cd87e9 100644
--- a/