refactor: Ensure statusDisplayOptions
are created consistently (#92)
Previous code created `statusDisplayOptions` in full each time, risking the creation of inconsistent states / defaults. Refactor to use `StatusDisplayOptions.from()` so the user's settings (and defaults) are always respected.
This commit is contained in:
parent
af7b668476
commit
9b21f3f9bf
@ -48,7 +48,6 @@ import app.pachli.interfaces.ActionButtonActivity
|
|||||||
import app.pachli.interfaces.ReselectableFragment
|
import app.pachli.interfaces.ReselectableFragment
|
||||||
import app.pachli.interfaces.StatusActionListener
|
import app.pachli.interfaces.StatusActionListener
|
||||||
import app.pachli.settings.PrefKeys
|
import app.pachli.settings.PrefKeys
|
||||||
import app.pachli.util.CardViewMode
|
|
||||||
import app.pachli.util.StatusDisplayOptions
|
import app.pachli.util.StatusDisplayOptions
|
||||||
import app.pachli.util.hide
|
import app.pachli.util.hide
|
||||||
import app.pachli.util.show
|
import app.pachli.util.show
|
||||||
@ -99,20 +98,9 @@ class ConversationsFragment :
|
|||||||
|
|
||||||
val preferences = PreferenceManager.getDefaultSharedPreferences(view.context)
|
val preferences = PreferenceManager.getDefaultSharedPreferences(view.context)
|
||||||
|
|
||||||
val statusDisplayOptions = StatusDisplayOptions(
|
val statusDisplayOptions = StatusDisplayOptions.from(
|
||||||
animateAvatars = preferences.getBoolean(PrefKeys.ANIMATE_GIF_AVATARS, false),
|
preferences,
|
||||||
mediaPreviewEnabled = accountManager.activeAccount?.mediaPreviewEnabled ?: true,
|
accountManager.activeAccount!!,
|
||||||
useAbsoluteTime = preferences.getBoolean(PrefKeys.ABSOLUTE_TIME_VIEW, false),
|
|
||||||
showBotOverlay = preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true),
|
|
||||||
useBlurhash = preferences.getBoolean(PrefKeys.USE_BLURHASH, true),
|
|
||||||
cardViewMode = CardViewMode.NONE,
|
|
||||||
confirmReblogs = preferences.getBoolean(PrefKeys.CONFIRM_REBLOGS, true),
|
|
||||||
confirmFavourites = preferences.getBoolean(PrefKeys.CONFIRM_FAVOURITES, false),
|
|
||||||
hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false),
|
|
||||||
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
|
|
||||||
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
|
|
||||||
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
|
|
||||||
openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
adapter = ConversationAdapter(statusDisplayOptions, this)
|
adapter = ConversationAdapter(statusDisplayOptions, this)
|
||||||
|
@ -46,8 +46,6 @@ import app.pachli.di.Injectable
|
|||||||
import app.pachli.di.ViewModelFactory
|
import app.pachli.di.ViewModelFactory
|
||||||
import app.pachli.entity.Attachment
|
import app.pachli.entity.Attachment
|
||||||
import app.pachli.entity.Status
|
import app.pachli.entity.Status
|
||||||
import app.pachli.settings.PrefKeys
|
|
||||||
import app.pachli.util.CardViewMode
|
|
||||||
import app.pachli.util.StatusDisplayOptions
|
import app.pachli.util.StatusDisplayOptions
|
||||||
import app.pachli.util.viewBinding
|
import app.pachli.util.viewBinding
|
||||||
import app.pachli.util.visible
|
import app.pachli.util.visible
|
||||||
@ -146,20 +144,9 @@ class ReportStatusesFragment :
|
|||||||
|
|
||||||
private fun initStatusesView() {
|
private fun initStatusesView() {
|
||||||
val preferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
val preferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||||
val statusDisplayOptions = StatusDisplayOptions(
|
val statusDisplayOptions = StatusDisplayOptions.from(
|
||||||
animateAvatars = false,
|
preferences,
|
||||||
mediaPreviewEnabled = accountManager.activeAccount?.mediaPreviewEnabled ?: true,
|
accountManager.activeAccount!!,
|
||||||
useAbsoluteTime = preferences.getBoolean(PrefKeys.ABSOLUTE_TIME_VIEW, false),
|
|
||||||
showBotOverlay = false,
|
|
||||||
useBlurhash = preferences.getBoolean(PrefKeys.USE_BLURHASH, true),
|
|
||||||
cardViewMode = CardViewMode.NONE,
|
|
||||||
confirmReblogs = preferences.getBoolean(PrefKeys.CONFIRM_REBLOGS, true),
|
|
||||||
confirmFavourites = preferences.getBoolean(PrefKeys.CONFIRM_FAVOURITES, false),
|
|
||||||
hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false),
|
|
||||||
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
|
|
||||||
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
|
|
||||||
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
|
|
||||||
openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
adapter = StatusesAdapter(statusDisplayOptions, viewModel.statusViewState, this)
|
adapter = StatusesAdapter(statusDisplayOptions, viewModel.statusViewState, this)
|
||||||
|
@ -51,8 +51,6 @@ import app.pachli.entity.Status
|
|||||||
import app.pachli.entity.Status.Mention
|
import app.pachli.entity.Status.Mention
|
||||||
import app.pachli.interfaces.AccountSelectionListener
|
import app.pachli.interfaces.AccountSelectionListener
|
||||||
import app.pachli.interfaces.StatusActionListener
|
import app.pachli.interfaces.StatusActionListener
|
||||||
import app.pachli.settings.PrefKeys
|
|
||||||
import app.pachli.util.CardViewMode
|
|
||||||
import app.pachli.util.StatusDisplayOptions
|
import app.pachli.util.StatusDisplayOptions
|
||||||
import app.pachli.util.openLink
|
import app.pachli.util.openLink
|
||||||
import app.pachli.view.showMuteAccountDialog
|
import app.pachli.view.showMuteAccountDialog
|
||||||
@ -77,20 +75,9 @@ class SearchStatusesFragment : SearchFragment<StatusViewData>(), StatusActionLis
|
|||||||
|
|
||||||
override fun createAdapter(): PagingDataAdapter<StatusViewData, *> {
|
override fun createAdapter(): PagingDataAdapter<StatusViewData, *> {
|
||||||
val preferences = PreferenceManager.getDefaultSharedPreferences(binding.searchRecyclerView.context)
|
val preferences = PreferenceManager.getDefaultSharedPreferences(binding.searchRecyclerView.context)
|
||||||
val statusDisplayOptions = StatusDisplayOptions(
|
val statusDisplayOptions = StatusDisplayOptions.from(
|
||||||
animateAvatars = preferences.getBoolean(PrefKeys.ANIMATE_GIF_AVATARS, false),
|
preferences,
|
||||||
mediaPreviewEnabled = viewModel.mediaPreviewEnabled,
|
accountManager.activeAccount!!,
|
||||||
useAbsoluteTime = preferences.getBoolean(PrefKeys.ABSOLUTE_TIME_VIEW, false),
|
|
||||||
showBotOverlay = preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true),
|
|
||||||
useBlurhash = preferences.getBoolean(PrefKeys.USE_BLURHASH, true),
|
|
||||||
cardViewMode = CardViewMode.NONE,
|
|
||||||
confirmReblogs = preferences.getBoolean(PrefKeys.CONFIRM_REBLOGS, true),
|
|
||||||
confirmFavourites = preferences.getBoolean(PrefKeys.CONFIRM_FAVOURITES, false),
|
|
||||||
hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false),
|
|
||||||
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
|
|
||||||
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
|
|
||||||
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
|
|
||||||
openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.searchRecyclerView.addItemDecoration(
|
binding.searchRecyclerView.addItemDecoration(
|
||||||
|
@ -43,8 +43,6 @@ import app.pachli.di.Injectable
|
|||||||
import app.pachli.di.ViewModelFactory
|
import app.pachli.di.ViewModelFactory
|
||||||
import app.pachli.fragment.SFragment
|
import app.pachli.fragment.SFragment
|
||||||
import app.pachli.interfaces.StatusActionListener
|
import app.pachli.interfaces.StatusActionListener
|
||||||
import app.pachli.settings.PrefKeys
|
|
||||||
import app.pachli.util.CardViewMode
|
|
||||||
import app.pachli.util.ListStatusAccessibilityDelegate
|
import app.pachli.util.ListStatusAccessibilityDelegate
|
||||||
import app.pachli.util.StatusDisplayOptions
|
import app.pachli.util.StatusDisplayOptions
|
||||||
import app.pachli.util.hide
|
import app.pachli.util.hide
|
||||||
@ -97,24 +95,9 @@ class ViewThreadFragment :
|
|||||||
thisThreadsStatusId = requireArguments().getString(ID_EXTRA)!!
|
thisThreadsStatusId = requireArguments().getString(ID_EXTRA)!!
|
||||||
val preferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
val preferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
||||||
|
|
||||||
val statusDisplayOptions = StatusDisplayOptions(
|
val statusDisplayOptions = StatusDisplayOptions.from(
|
||||||
animateAvatars = preferences.getBoolean(PrefKeys.ANIMATE_GIF_AVATARS, false),
|
preferences,
|
||||||
mediaPreviewEnabled = accountManager.activeAccount!!.mediaPreviewEnabled,
|
accountManager.activeAccount!!,
|
||||||
useAbsoluteTime = preferences.getBoolean(PrefKeys.ABSOLUTE_TIME_VIEW, false),
|
|
||||||
showBotOverlay = preferences.getBoolean(PrefKeys.SHOW_BOT_OVERLAY, true),
|
|
||||||
useBlurhash = preferences.getBoolean(PrefKeys.USE_BLURHASH, true),
|
|
||||||
cardViewMode = if (preferences.getBoolean(PrefKeys.SHOW_CARDS_IN_TIMELINES, false)) {
|
|
||||||
CardViewMode.INDENTED
|
|
||||||
} else {
|
|
||||||
CardViewMode.NONE
|
|
||||||
},
|
|
||||||
confirmReblogs = preferences.getBoolean(PrefKeys.CONFIRM_REBLOGS, true),
|
|
||||||
confirmFavourites = preferences.getBoolean(PrefKeys.CONFIRM_FAVOURITES, false),
|
|
||||||
hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false),
|
|
||||||
animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false),
|
|
||||||
showStatsInline = preferences.getBoolean(PrefKeys.SHOW_STATS_INLINE, false),
|
|
||||||
showSensitiveMedia = accountManager.activeAccount!!.alwaysShowSensitiveMedia,
|
|
||||||
openSpoiler = accountManager.activeAccount!!.alwaysOpenSpoiler,
|
|
||||||
)
|
)
|
||||||
adapter = ThreadAdapter(statusDisplayOptions, this)
|
adapter = ThreadAdapter(statusDisplayOptions, this)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user