Browse Source

finish up stories viewer UI

close #537, close #1554
renovate/org.jetbrains.kotlinx-kotlinx-coroutines-test-1.x
Austin Huang 4 years ago
parent
commit
7522b5f083
No known key found for this signature in database GPG Key ID: 84C23AA04587A91F
  1. 39
      app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.kt
  2. 1
      app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.kt
  3. 10
      app/src/main/java/awais/instagrabber/fragments/settings/StoriesPreferencesFragment.java
  4. 1
      app/src/main/java/awais/instagrabber/utils/SettingsHelper.kt
  5. 4
      app/src/main/java/awais/instagrabber/viewmodels/StoryFragmentViewModel.kt
  6. 2
      app/src/main/res/values/strings.xml

39
app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.kt

@ -240,6 +240,15 @@ class StoryViewerFragment : Fragment() {
storyMedias.set(0, newItem) storyMedias.set(0, newItem)
storiesAdapter!!.submitList(storyMedias) storiesAdapter!!.submitList(storyMedias)
storiesViewModel.setMedia(0) storiesViewModel.setMedia(0)
binding.listToggle.setEnabled(true)
binding.storiesList.setVisibility(
if (Utils.settingsHelper.getBoolean(PreferenceKeys.PREF_STORY_SHOW_LIST)) View.VISIBLE
else View.GONE
)
}
else {
binding.listToggle.setEnabled(false)
binding.storiesList.setVisibility(View.GONE)
} }
}) })
storiesViewModel.getDate().observe(fragmentActivity, { storiesViewModel.getDate().observe(fragmentActivity, {
@ -268,6 +277,12 @@ class StoryViewerFragment : Fragment() {
binding.btnShare.setOnClickListener({ _ -> shareStoryViaDm() }) binding.btnShare.setOnClickListener({ _ -> shareStoryViaDm() })
binding.btnReply.setOnClickListener({ _ -> createReplyDialog(null) }) binding.btnReply.setOnClickListener({ _ -> createReplyDialog(null) })
binding.stickers.setOnClickListener({ _ -> showStickerMenu() }) binding.stickers.setOnClickListener({ _ -> showStickerMenu() })
binding.listToggle.setOnClickListener({ _ ->
binding.storiesList.setVisibility(
if (binding.storiesList.visibility == View.GONE) View.VISIBLE
else View.GONE
)
})
} }
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
@ -297,10 +312,22 @@ class StoryViewerFragment : Fragment() {
if (models != null) { if (models != null) {
when (it) { when (it) {
StoryPaginationType.FORWARD -> { StoryPaginationType.FORWARD -> {
paginateStories(false, currentFeedStoryIndex == models.size - 2)
if (currentFeedStoryIndex == models.size - 1)
Toast.makeText(
context,
R.string.no_more_stories,
Toast.LENGTH_SHORT
).show()
else paginateStories(false, currentFeedStoryIndex == models.size - 2)
} }
StoryPaginationType.BACKWARD -> { StoryPaginationType.BACKWARD -> {
paginateStories(true, false)
if (currentFeedStoryIndex == 0)
Toast.makeText(
context,
R.string.no_more_stories,
Toast.LENGTH_SHORT
).show()
else paginateStories(true, false)
} }
StoryPaginationType.ERROR -> { StoryPaginationType.ERROR -> {
Toast.makeText( Toast.makeText(
@ -356,7 +383,6 @@ class StoryViewerFragment : Fragment() {
val context = context ?: return val context = context ?: return
live = null live = null
if (menuProfile != null) menuProfile!!.isVisible = false if (menuProfile != null) menuProfile!!.isVisible = false
profileVisible = false
binding.imageViewer.controller = null binding.imageViewer.controller = null
releasePlayer() releasePlayer()
val type = options!!.type val type = options!!.type
@ -435,6 +461,9 @@ class StoryViewerFragment : Fragment() {
releasePlayer() releasePlayer()
profileVisible = currentStory.user?.username != null
if (menuProfile != null) menuProfile!!.isVisible = profileVisible
binding.btnDownload.isEnabled = false binding.btnDownload.isEnabled = false
binding.btnShare.isEnabled = currentStory.canReshare binding.btnShare.isEnabled = currentStory.canReshare
binding.btnReply.isEnabled = currentStory.canReply binding.btnReply.isEnabled = currentStory.canReply
@ -544,10 +573,6 @@ class StoryViewerFragment : Fragment() {
wasCanceled: Boolean wasCanceled: Boolean
) { ) {
binding.btnDownload.isEnabled = false binding.btnDownload.isEnabled = false
if (menuProfile != null) {
profileVisible = false
menuProfile!!.isVisible = false
}
binding.progressView.visibility = View.GONE binding.progressView.visibility = View.GONE
} }
}) })

1
app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.kt

@ -11,6 +11,7 @@ object PreferenceKeys {
const val PREF_SHOWN_COUNT_TOOLTIP = "shown_count_tooltip" const val PREF_SHOWN_COUNT_TOOLTIP = "shown_count_tooltip"
const val PREF_SEARCH_FOCUS_KEYBOARD = "search_focus_keyboard" const val PREF_SEARCH_FOCUS_KEYBOARD = "search_focus_keyboard"
const val PREF_AUTO_BACKUP_ENABLED = "auto_backup_enabled" const val PREF_AUTO_BACKUP_ENABLED = "auto_backup_enabled"
const val PREF_STORY_SHOW_LIST = "story_show_list"
// string prefs // string prefs
const val FOLDER_PATH = "custom_path" const val FOLDER_PATH = "custom_path"

10
app/src/main/java/awais/instagrabber/fragments/settings/StoriesPreferencesFragment.java

@ -19,6 +19,7 @@ public class StoriesPreferencesFragment extends BasePreferencesFragment {
screen.addPreference(getHideMutedReelsPreference(context)); screen.addPreference(getHideMutedReelsPreference(context));
screen.addPreference(getMarkStoriesSeenPreference(context)); screen.addPreference(getMarkStoriesSeenPreference(context));
screen.addPreference(getAutoPlayPreference(context)); screen.addPreference(getAutoPlayPreference(context));
screen.addPreference(getStoryListPreference(context));
} }
private Preference getStorySortPreference(@NonNull final Context context) { private Preference getStorySortPreference(@NonNull final Context context) {
@ -62,4 +63,13 @@ public class StoriesPreferencesFragment extends BasePreferencesFragment {
preference.setIconSpaceReserved(false); preference.setIconSpaceReserved(false);
return preference; return preference;
} }
private Preference getStoryListPreference(@NonNull final Context context) {
final SwitchPreferenceCompat preference = new SwitchPreferenceCompat(context);
preference.setKey(PreferenceKeys.PREF_STORY_SHOW_LIST);
preference.setTitle(R.string.story_list_setting);
preference.setSummary(R.string.story_list_setting_summary);
preference.setIconSpaceReserved(false);
return preference;
}
} }

1
app/src/main/java/awais/instagrabber/utils/SettingsHelper.kt

@ -135,6 +135,7 @@ class SettingsHelper(context: Context) {
PreferenceKeys.PLAY_IN_BACKGROUND, PreferenceKeys.PLAY_IN_BACKGROUND,
PreferenceKeys.PREF_SHOWN_COUNT_TOOLTIP, PreferenceKeys.PREF_SHOWN_COUNT_TOOLTIP,
PreferenceKeys.PREF_SEARCH_FOCUS_KEYBOARD, PreferenceKeys.PREF_SEARCH_FOCUS_KEYBOARD,
PreferenceKeys.PREF_STORY_SHOW_LIST,
PreferenceKeys.PREF_AUTO_BACKUP_ENABLED PreferenceKeys.PREF_AUTO_BACKUP_ENABLED
) )
annotation class BooleanSettings annotation class BooleanSettings

4
app/src/main/java/awais/instagrabber/viewmodels/StoryFragmentViewModel.kt

@ -28,7 +28,7 @@ import kotlinx.coroutines.launch
class StoryFragmentViewModel : ViewModel() { class StoryFragmentViewModel : ViewModel() {
// large data // large data
private val currentStory = MutableLiveData<Story>()
private val currentStory = MutableLiveData<Story?>()
private val currentMedia = MutableLiveData<StoryMedia>() private val currentMedia = MutableLiveData<StoryMedia>()
// small data // small data
@ -181,7 +181,7 @@ class StoryFragmentViewModel : ViewModel() {
/* get functions */ /* get functions */
fun getCurrentStory(): LiveData<Story> {
fun getCurrentStory(): LiveData<Story?> {
return currentStory return currentStory
} }

2
app/src/main/res/values/strings.xml

@ -32,6 +32,8 @@
<string name="dm_mark_as_seen_setting">Mark DM as seen after viewing</string> <string name="dm_mark_as_seen_setting">Mark DM as seen after viewing</string>
<string name="dm_mark_as_seen_setting_summary">Other members will know you viewed it</string> <string name="dm_mark_as_seen_setting_summary">Other members will know you viewed it</string>
<string name="autoplay_stories_setting">Autoplay video stories</string> <string name="autoplay_stories_setting">Autoplay video stories</string>
<string name="story_list_setting">Display story list by default</string>
<string name="story_list_setting_summary">For viewing stories</string>
<string name="activity_setting">Enable activity notifications</string> <string name="activity_setting">Enable activity notifications</string>
<string name="story_sort_setting">Feed stories sort</string> <string name="story_sort_setting">Feed stories sort</string>
<string name="error_loading_profile">Error loading profile! Is the username valid? If so, you may be ratelimited.</string> <string name="error_loading_profile">Error loading profile! Is the username valid? If so, you may be ratelimited.</string>

Loading…
Cancel
Save