From 1cd75356c77ee54e14c367d9cb33adf8e9be9314 Mon Sep 17 00:00:00 2001 From: Ammar Githam Date: Thu, 18 Mar 2021 22:03:56 +0900 Subject: [PATCH] Check currentFeedStoryIndex every time before accessing models list. Fixes: https://github.com/austinhuang0131/barinsta/issues/819 --- .../fragments/StoryViewerFragment.java | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java index 92e4ff66..4d666f6a 100644 --- a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java @@ -684,47 +684,45 @@ public class StoryViewerFragment extends Fragment { String currentStoryMediaId = null; final Type type = options.getType(); StoryViewerOptions fetchOptions = null; - if (currentFeedStoryIndex >= 0) { - switch (type) { - case HIGHLIGHT: { - final HighlightsViewModel highlightsViewModel = (HighlightsViewModel) viewModel; - final List models = highlightsViewModel.getList().getValue(); - if (models == null || models.isEmpty() || currentFeedStoryIndex >= models.size()) { - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); - return; - } - final HighlightModel model = models.get(currentFeedStoryIndex); - currentStoryMediaId = model.getId(); - fetchOptions = StoryViewerOptions.forHighlight(model.getId()); - currentStoryUsername = model.getTitle(); - break; + switch (type) { + case HIGHLIGHT: { + final HighlightsViewModel highlightsViewModel = (HighlightsViewModel) viewModel; + final List models = highlightsViewModel.getList().getValue(); + if (models == null || models.isEmpty() || currentFeedStoryIndex >= models.size() || currentFeedStoryIndex < 0) { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + return; } - case FEED_STORY_POSITION: { - final FeedStoriesViewModel feedStoriesViewModel = (FeedStoriesViewModel) viewModel; - final List models = feedStoriesViewModel.getList().getValue(); - if (models == null) return; - final FeedStoryModel model = models.get(currentFeedStoryIndex); - currentStoryMediaId = model.getStoryMediaId(); - currentStoryUsername = model.getProfileModel().getUsername(); - fetchOptions = StoryViewerOptions.forUser(Long.parseLong(currentStoryMediaId), currentStoryUsername); - if (model.isLive()) { - live = model.getFirstStoryModel(); - } - break; + final HighlightModel model = models.get(currentFeedStoryIndex); + currentStoryMediaId = model.getId(); + fetchOptions = StoryViewerOptions.forHighlight(model.getId()); + currentStoryUsername = model.getTitle(); + break; + } + case FEED_STORY_POSITION: { + final FeedStoriesViewModel feedStoriesViewModel = (FeedStoriesViewModel) viewModel; + final List models = feedStoriesViewModel.getList().getValue(); + if (models == null || currentFeedStoryIndex >= models.size() || currentFeedStoryIndex < 0) return; + final FeedStoryModel model = models.get(currentFeedStoryIndex); + currentStoryMediaId = model.getStoryMediaId(); + currentStoryUsername = model.getProfileModel().getUsername(); + fetchOptions = StoryViewerOptions.forUser(Long.parseLong(currentStoryMediaId), currentStoryUsername); + if (model.isLive()) { + live = model.getFirstStoryModel(); } - case STORY_ARCHIVE: { - final ArchivesViewModel archivesViewModel = (ArchivesViewModel) viewModel; - final List models = archivesViewModel.getList().getValue(); - if (models == null || models.isEmpty() || currentFeedStoryIndex >= models.size()) { - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); - return; - } - final HighlightModel model = models.get(currentFeedStoryIndex); - currentStoryMediaId = model.getId(); - currentStoryUsername = model.getTitle(); - fetchOptions = StoryViewerOptions.forUser(Long.parseLong(currentStoryMediaId), currentStoryUsername); - break; + break; + } + case STORY_ARCHIVE: { + final ArchivesViewModel archivesViewModel = (ArchivesViewModel) viewModel; + final List models = archivesViewModel.getList().getValue(); + if (models == null || models.isEmpty() || currentFeedStoryIndex >= models.size() || currentFeedStoryIndex < 0) { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + return; } + final HighlightModel model = models.get(currentFeedStoryIndex); + currentStoryMediaId = model.getId(); + currentStoryUsername = model.getTitle(); + fetchOptions = StoryViewerOptions.forUser(Long.parseLong(currentStoryMediaId), currentStoryUsername); + break; } } if (type == Type.USER) {