Fix drawer recompositions

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

@ -1,7 +1,19 @@
package org.tasks.compose.drawer
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.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
sealed class DrawerItem {
@ -15,8 +27,21 @@ sealed class DrawerItem {
val selected: Boolean = false,
val filter: org.tasks.filters.Filter,
) : DrawerItem() {
override fun key(): String {
return "filter_${hashCode()}"
override fun key() = when (filter) {
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 header: NavigationDrawerSubheader,
) : DrawerItem() {
override fun key(): String {
return "header_${header.subheaderType}_${header.id}"
}
override fun key() = "header_${header.subheaderType}_${header.id}"
}
abstract fun key(): String

Loading…
Cancel
Save