diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/DrawerItem.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/DrawerItem.kt index a9ddf5736..d20061216 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/DrawerItem.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/DrawerItem.kt @@ -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