Fix drawer recompositions

pull/3385/head
Alex Baker 9 months ago
parent cf5f810f18
commit 870ecadc56

@ -1,7 +1,19 @@
package org.tasks.compose.drawer package org.tasks.compose.drawer
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import co.touchlab.kermit.Logger
import org.tasks.data.UUIDHelper
import org.tasks.filters.CaldavFilter
import org.tasks.filters.CustomFilter
import org.tasks.filters.MyTasksFilter
import org.tasks.filters.NavigationDrawerSubheader import org.tasks.filters.NavigationDrawerSubheader
import org.tasks.filters.NotificationsFilter
import org.tasks.filters.PlaceFilter
import org.tasks.filters.RecentlyModifiedFilter
import org.tasks.filters.SnoozedFilter
import org.tasks.filters.TagFilter
import org.tasks.filters.TimerFilter
import org.tasks.filters.TodayFilter
@Stable @Stable
sealed class DrawerItem { sealed class DrawerItem {
@ -15,8 +27,21 @@ sealed class DrawerItem {
val selected: Boolean = false, val selected: Boolean = false,
val filter: org.tasks.filters.Filter, val filter: org.tasks.filters.Filter,
) : DrawerItem() { ) : DrawerItem() {
override fun key(): String { override fun key() = when (filter) {
return "filter_${hashCode()}" is CustomFilter -> "custom_${filter.id}"
is CaldavFilter -> "list_${filter.account.id}_${filter.calendar.id}"
is PlaceFilter -> "place_${filter.place.id}"
is TagFilter -> "tag_${filter.tagData.id}"
is MyTasksFilter -> "builtin_my_tasks"
is TodayFilter -> "builtin_today"
is RecentlyModifiedFilter -> "builtin_recently_modified"
is TimerFilter -> "builtin_timer"
is SnoozedFilter -> "builtin_snoozed"
is NotificationsFilter -> "builtin_notifications"
else -> {
Logger.w { "Unexpected filter type: ${filter.javaClass.name}" }
UUIDHelper.newUUID()
}
} }
} }
@ -28,9 +53,7 @@ sealed class DrawerItem {
val canAdd: Boolean, val canAdd: Boolean,
val header: NavigationDrawerSubheader, val header: NavigationDrawerSubheader,
) : DrawerItem() { ) : DrawerItem() {
override fun key(): String { override fun key() = "header_${header.subheaderType}_${header.id}"
return "header_${header.subheaderType}_${header.id}"
}
} }
abstract fun key(): String abstract fun key(): String

Loading…
Cancel
Save