diff --git a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java index 82438999..ddd84ce3 100644 --- a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java @@ -137,14 +137,14 @@ public class StoryViewerFragment extends Fragment { private String[] mentions; private QuizModel quiz; private SliderModel slider; - private MenuItem menuDownload; - private MenuItem menuDm; + private MenuItem menuDownload, menuDm, menuProfile; private SimpleExoPlayer player; // private boolean isHashtag; // private boolean isLoc; // private String highlight; - private String actionBarTitle; + private String actionBarTitle, actionBarSubtitle; private boolean fetching = false, sticking = false, shouldRefresh = true; + private boolean downloadVisible = false, dmVisible = false, profileVisible = true; private int currentFeedStoryIndex; private double sliderValue; private StoriesViewModel storiesViewModel; @@ -195,8 +195,10 @@ public class StoryViewerFragment extends Fragment { menuInflater.inflate(R.menu.story_menu, menu); menuDownload = menu.findItem(R.id.action_download); menuDm = menu.findItem(R.id.action_dms); - menuDownload.setVisible(false); - menuDm.setVisible(false); + menuProfile = menu.findItem(R.id.action_profile); + menuDownload.setVisible(downloadVisible); + menuDm.setVisible(dmVisible); + menuProfile.setVisible(profileVisible); } @Override @@ -215,7 +217,8 @@ public class StoryViewerFragment extends Fragment { else ActivityCompat.requestPermissions(requireActivity(), DownloadUtils.PERMS, 8020); return true; - } else if (itemId == R.id.action_dms) { + } + if (itemId == R.id.action_dms) { final EditText input = new EditText(context); input.setHint(R.string.reply_hint); new AlertDialog.Builder(context) @@ -259,6 +262,9 @@ public class StoryViewerFragment extends Fragment { .show(); return true; } + if (itemId == R.id.action_profile) { + openProfile("@" + currentStory.getUsername()); + } return false; } @@ -281,7 +287,9 @@ public class StoryViewerFragment extends Fragment { final ActionBar actionBar = fragmentActivity.getSupportActionBar(); if (actionBar != null) { actionBar.setTitle(actionBarTitle); + actionBar.setSubtitle(actionBarSubtitle); } + setHasOptionsMenu(true); } @Override @@ -697,6 +705,10 @@ public class StoryViewerFragment extends Fragment { lastSlidePos = 0; if (menuDownload != null) menuDownload.setVisible(false); if (menuDm != null) menuDm.setVisible(false); + if (menuProfile != null) menuProfile.setVisible(false); + downloadVisible = false; + dmVisible = false; + profileVisible = false; binding.imageViewer.setController(null); releasePlayer(); String currentStoryMediaId = null; @@ -846,7 +858,6 @@ public class StoryViewerFragment extends Fragment { final MediaItemType itemType = currentStory.getItemType(); - if (menuDownload != null) menuDownload.setVisible(false); url = itemType == MediaItemType.MEDIA_TYPE_IMAGE ? currentStory.getStoryUrl() : currentStory.getVideoUrl(); if (itemType != MediaItemType.MEDIA_TYPE_LIVE) { @@ -900,9 +911,10 @@ public class StoryViewerFragment extends Fragment { else setupImage(); final ActionBar actionBar = fragmentActivity.getSupportActionBar(); + actionBarSubtitle = Utils.datetimeParser.format(new Date(currentStory.getTimestamp() * 1000L)); if (actionBar != null) { try { - actionBar.setSubtitle(Utils.datetimeParser.format(new Date(currentStory.getTimestamp() * 1000L))); + actionBar.setSubtitle(actionBarSubtitle); } catch (Exception e) { Log.e(TAG, "refreshStory: ", e); } @@ -948,11 +960,17 @@ public class StoryViewerFragment extends Fragment { final ImageInfo imageInfo, final Animatable animatable) { if (menuDownload != null) { + downloadVisible = true; menuDownload.setVisible(true); } if (currentStory.canReply() && menuDm != null) { + dmVisible = true; menuDm.setVisible(true); } + if (!TextUtils.isEmpty(currentStory.getUsername())) { + profileVisible = true; + menuProfile.setVisible(true); + } binding.progressView.setVisibility(View.GONE); } }) @@ -982,9 +1000,18 @@ public class StoryViewerFragment extends Fragment { @Nullable final MediaSource.MediaPeriodId mediaPeriodId, @NonNull final LoadEventInfo loadEventInfo, @NonNull final MediaLoadData mediaLoadData) { - if (menuDownload != null) menuDownload.setVisible(true); - if (currentStory.canReply() && menuDm != null) + if (menuDownload != null) { + downloadVisible = true; + menuDownload.setVisible(true); + } + if (currentStory.canReply() && menuDm != null) { + dmVisible = true; menuDm.setVisible(true); + } + if (!TextUtils.isEmpty(currentStory.getUsername()) && menuProfile != null) { + profileVisible = true; + menuProfile.setVisible(true); + } binding.progressView.setVisibility(View.GONE); } @@ -993,9 +1020,18 @@ public class StoryViewerFragment extends Fragment { @Nullable final MediaSource.MediaPeriodId mediaPeriodId, @NonNull final LoadEventInfo loadEventInfo, @NonNull final MediaLoadData mediaLoadData) { - if (menuDownload != null) menuDownload.setVisible(true); - if (currentStory.canReply() && menuDm != null) + if (menuDownload != null) { + downloadVisible = true; + menuDownload.setVisible(true); + } + if (currentStory.canReply() && menuDm != null) { + dmVisible = true; menuDm.setVisible(true); + } + if (!TextUtils.isEmpty(currentStory.getUsername()) && menuProfile != null) { + profileVisible = true; + menuProfile.setVisible(true); + } binding.progressView.setVisibility(View.VISIBLE); } @@ -1014,8 +1050,18 @@ public class StoryViewerFragment extends Fragment { @NonNull final MediaLoadData mediaLoadData, @NonNull final IOException error, final boolean wasCanceled) { - if (menuDownload != null) menuDownload.setVisible(false); - if (menuDm != null) menuDm.setVisible(false); + if (menuDownload != null) { + downloadVisible = false; + menuDownload.setVisible(false); + } + if (menuDm != null) { + dmVisible = false; + menuDm.setVisible(false); + } + if (menuProfile != null) { + profileVisible = false; + menuProfile.setVisible(false); + } binding.progressView.setVisibility(View.GONE); } }); diff --git a/app/src/main/res/menu/story_menu.xml b/app/src/main/res/menu/story_menu.xml index a7293f91..8169fd62 100644 --- a/app/src/main/res/menu/story_menu.xml +++ b/app/src/main/res/menu/story_menu.xml @@ -5,13 +5,18 @@ + android:title="@string/reply_story" + android:titleCondensed="@string/reply_story" + app:showAsAction="never" /> + + app:showAsAction="never" /> \ No newline at end of file