[merge] Fix various crashes

Change-Id: I0e10d09e84771d79b8d54cd9b1239162cc19ceda
This commit is contained in:
SpiritCroc 2022-09-10 15:45:50 +02:00
parent f1b4db73e4
commit e314922280
4 changed files with 43 additions and 37 deletions

View File

@ -101,8 +101,8 @@ class HomeDetailFragment :
private lateinit var sharedCallActionViewModel: SharedKnownCallsViewModel
// When this changes, restart the activity for changes to apply
private val shouldShowUnimportantCounterBadge = vectorPreferences.shouldShowUnimportantCounterBadge()
private val useAggregateCounts = vectorPreferences.aggregateUnreadRoomCounts()
private val shouldShowUnimportantCounterBadge: Boolean by lazy { vectorPreferences.shouldShowUnimportantCounterBadge() }
private val useAggregateCounts: Boolean by lazy { vectorPreferences.aggregateUnreadRoomCounts() }
private var hasUnreadRooms = false
set(value) {

View File

@ -1611,43 +1611,45 @@ class TimelineFragment :
}
}
private val stickyHeaderItemDecoration = object : StickyHeaderItemDecoration(timelineEventController, reverse = true) {
override fun isHeader(model: EpoxyModel<*>?): Boolean {
return model is DaySeparatorItem
}
override fun preventOverlay(model: EpoxyModel<*>?): Boolean {
return model is TimelineReadMarkerItem
}
override fun getHeaderViewHolderForItem(headerPosition: Int, parent: RecyclerView): EpoxyViewHolder {
// Same as super
val viewHolder = timelineEventController.adapter.onCreateViewHolder(
parent,
timelineEventController.adapter.getItemViewType(headerPosition)
)
timelineEventController.adapter.onBindViewHolder(viewHolder, headerPosition)
// Same as super -- end
// We want to hide the separator line for floating dates
(viewHolder.holder as? DaySeparatorItem.Holder)?.let { DaySeparatorItem.asFloatingDate(it) }
return viewHolder
}
// While the header has a sticky overlay, only hide its text, not the separator lines
override fun updateOverlaidHeader(parent: RecyclerView, position: Int, isCurrentlyOverlaid: Boolean): Boolean {
val model = tryOrNull { timelineEventController.adapter.getModelAtPosition(position) as? DaySeparatorItem }
if (model != null) {
val viewHolder = ((parent.findViewHolderForAdapterPosition(position) as? EpoxyViewHolder)?.holder) as? DaySeparatorItem.Holder
model.shouldBeVisible(!isCurrentlyOverlaid, viewHolder)
return true
private val stickyHeaderItemDecoration: StickyHeaderItemDecoration by lazy {
object : StickyHeaderItemDecoration(timelineEventController, reverse = true) {
override fun isHeader(model: EpoxyModel<*>?): Boolean {
return model is DaySeparatorItem
}
return false
}
override fun getViewForFadeAnimation(holder: EpoxyViewHolder): View {
return (holder.holder as? DaySeparatorItem.Holder)?.dayTextView ?: super.getViewForFadeAnimation(holder)
override fun preventOverlay(model: EpoxyModel<*>?): Boolean {
return model is TimelineReadMarkerItem
}
override fun getHeaderViewHolderForItem(headerPosition: Int, parent: RecyclerView): EpoxyViewHolder {
// Same as super
val viewHolder = timelineEventController.adapter.onCreateViewHolder(
parent,
timelineEventController.adapter.getItemViewType(headerPosition)
)
timelineEventController.adapter.onBindViewHolder(viewHolder, headerPosition)
// Same as super -- end
// We want to hide the separator line for floating dates
(viewHolder.holder as? DaySeparatorItem.Holder)?.let { DaySeparatorItem.asFloatingDate(it) }
return viewHolder
}
// While the header has a sticky overlay, only hide its text, not the separator lines
override fun updateOverlaidHeader(parent: RecyclerView, position: Int, isCurrentlyOverlaid: Boolean): Boolean {
val model = tryOrNull { timelineEventController.adapter.getModelAtPosition(position) as? DaySeparatorItem }
if (model != null) {
val viewHolder = ((parent.findViewHolderForAdapterPosition(position) as? EpoxyViewHolder)?.holder) as? DaySeparatorItem.Holder
model.shouldBeVisible(!isCurrentlyOverlaid, viewHolder)
return true
}
return false
}
override fun getViewForFadeAnimation(holder: EpoxyViewHolder): View {
return (holder.holder as? DaySeparatorItem.Holder)?.dayTextView ?: super.getViewForFadeAnimation(holder)
}
}
}

View File

@ -1416,6 +1416,8 @@ class VectorPreferences @Inject constructor(
* Indicates whether or not new app layout is enabled.
*/
fun isNewAppLayoutEnabled(): Boolean {
// SC: disabled for now (only crashes either way)
if (true) return false
return vectorFeatures.isNewAppLayoutFeatureEnabled() &&
defaultPrefs.getBoolean(SETTINGS_LABS_NEW_APP_LAYOUT_KEY, getDefault(R.bool.settings_labs_new_app_layout_default))
}

View File

@ -154,11 +154,13 @@
android:summary="@string/labs_enable_element_call_permission_shortcuts_summary"
android:title="@string/labs_enable_element_call_permission_shortcuts" />
<!--
<im.vector.app.core.preference.VectorSwitchPreference
android:defaultValue="@bool/settings_labs_new_app_layout_default"
android:key="SETTINGS_LABS_NEW_APP_LAYOUT_KEY"
android:summary="@string/labs_enable_new_app_layout_summary"
android:title="@string/labs_enable_new_app_layout_title" />
-->
</im.vector.app.core.preference.VectorPreferenceCategory>
</androidx.preference.PreferenceScreen>