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