Replace sealed interfaces

pull/3385/head
Alex Baker 9 months ago
parent 3cd169dd87
commit cf5f810f18

@ -4,7 +4,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
typealias TaskListEventBus = MutableSharedFlow<TaskListEvent>
sealed interface TaskListEvent {
data class TaskCreated(val uuid: String) : TaskListEvent
data class CalendarEventCreated(val title: String?, val uri: String) : TaskListEvent
sealed class TaskListEvent {
data class TaskCreated(val uuid: String) : TaskListEvent()
data class CalendarEventCreated(val title: String?, val uri: String) : TaskListEvent()
}

@ -47,13 +47,13 @@ import org.tasks.tasklist.TasksResults
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
sealed interface Banner {
data object NotificationsDisabled : Banner
data object AlarmsDisabled : Banner
data object QuietHoursEnabled : Banner
data object BegForMoney : Banner
data object WarnMicrosoft : Banner
data object WarnGoogleTasks : Banner
sealed class Banner {
data object NotificationsDisabled : Banner()
data object AlarmsDisabled : Banner()
data object QuietHoursEnabled : Banner()
data object BegForMoney : Banner()
data object WarnMicrosoft : Banner()
data object WarnGoogleTasks : Banner()
}
@HiltViewModel

@ -124,7 +124,7 @@ unstable class MainActivity {
}
unstable class State {
stable val begForMoney: Boolean
unstable val filter: Filter
stable val filter: Filter
unstable val task: Task?
stable val drawerItems: ImmutableList<DrawerItem>
stable val searchItems: ImmutableList<DrawerItem>
@ -197,7 +197,7 @@ unstable class TaskListFragment {
unstable val mainViewModel$delegate: Lazy<MainActivityViewModel>
unstable var taskAdapter: TaskAdapter
unstable var recyclerAdapter: DragAndDropRecyclerAdapter?
unstable var filter: Filter
stable var filter: Filter
unstable var search: MenuItem
unstable var mode: ActionMode?
unstable var themeColor: ThemeColor
@ -211,7 +211,7 @@ unstable class TaskListFragment {
}
unstable class AstridTaskAdapter {
unstable val list: TaskListMetadata
unstable val filter: AstridOrderingFilter
stable val filter: AstridOrderingFilter
unstable val updater: SubtasksFilterUpdater
unstable val taskDao: TaskDao
unstable val localBroadcastManager: LocalBroadcastManager
@ -234,7 +234,7 @@ unstable class FilterViewHolder {
unstable val shareIndicator: ImageView
unstable val icon: MutableStateFlow<String?>
unstable val color: MutableStateFlow<Int>
unstable var filter: Filter
stable var filter: Filter
<runtime stability> = Unstable
}
stable class GoogleTaskManualSortAdapter {
@ -677,7 +677,7 @@ unstable class FilterSettingsActivity {
<runtime stability> = Unstable
}
unstable class ViewState {
runtime val filter: CustomFilter?
stable val filter: CustomFilter?
stable val fabExtended: Boolean
unstable val criteria: ImmutableList<CriterionInstance>
<runtime stability> = Unstable
@ -2175,7 +2175,7 @@ unstable class TaskListPreferences {
}
unstable class TaskerListNotification {
unstable var defaultFilterProvider: DefaultFilterProvider
unstable var filter: Filter
stable var filter: Filter
stable var cancelled: Boolean
unstable val listPickerLauncher: ActivityResultLauncher<Intent>
<runtime stability> = Unstable
@ -2774,6 +2774,9 @@ stable class CalendarEventCreated {
stable val uri: String
<runtime stability> = Stable
}
stable class TaskListEvent {
<runtime stability> = Stable
}
stable class NotificationsDisabled {
<runtime stability> = Stable
}
@ -2792,14 +2795,17 @@ stable class WarnMicrosoft {
stable class WarnGoogleTasks {
<runtime stability> = Stable
}
stable class Banner {
<runtime stability> = Stable
}
unstable class State {
unstable val filter: Filter
stable val filter: Filter
stable val now: Long
stable val searchQuery: String?
unstable val tasks: TasksResults
runtime val tasks: TasksResults
stable val syncOngoing: Boolean
unstable val collapsed: Set<Long>
runtime val banner: Banner?
stable val banner: Banner?
<runtime stability> = Unstable
}
unstable class TaskListViewModel {
@ -2842,7 +2848,7 @@ unstable class ShortcutConfigActivity {
unstable var shortcutName: TextInputEditText
unstable var colorIcon: TextView
unstable var clear: View
unstable var selectedFilter: Filter?
stable var selectedFilter: Filter?
stable var selectedTheme: Int
unstable val listPickerResult: ActivityResultLauncher<Intent>
<runtime stability> = Unstable
@ -2867,7 +2873,7 @@ unstable class TasksWidgetAdapter {
unstable class TasksWidgetViewFactory {
unstable val subtasksHelper: SubtasksHelper
unstable val widgetPreferences: WidgetPreferences
unstable val filter: Filter
stable val filter: Filter
unstable val context: Context
stable val widgetId: Int
unstable val taskDao: TaskDao

@ -363,7 +363,7 @@ restartable skippable scheme("[androidx.compose.ui.UiComposable, [androidx.compo
stable content: Function3<@[ParameterName(name = 'isDragging')] Boolean, Composer, Int, Unit>
)
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun FilterChip(
unstable filter: Filter
stable filter: Filter
stable defaultIcon: String
stable showText: Boolean
stable showIcon: Boolean
@ -740,7 +740,7 @@ restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun InfoRow(
)
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun InfoPreview()
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun ListRow(
unstable list: Filter?
stable list: Filter?
stable colorProvider: Function1<Int, Int>
stable onClick: Function0<Unit>
)
@ -832,10 +832,10 @@ restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun NoStartDa
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun FutureStartDate()
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun PastStartDate()
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun SubtaskRow(
originalFilter: CaldavFilter
filter: CaldavFilter
stable originalFilter: CaldavFilter
stable filter: CaldavFilter
stable hasParent: Boolean
unstable existingSubtasks: TasksResults
existingSubtasks: TasksResults
unstable newSubtasks: List<Task>
stable openSubtask: Function1<Task, Unit>
stable completeExistingSubtask: Function2<Task, Boolean, Unit>

@ -7,16 +7,16 @@
"totalGroups": 853,
"staticArguments": 1367,
"certainArguments": 162,
"knownStableArguments": 6373,
"knownUnstableArguments": 175,
"unknownStableArguments": 16,
"knownStableArguments": 6387,
"knownUnstableArguments": 171,
"unknownStableArguments": 6,
"totalArguments": 6564,
"markedStableClasses": 0,
"inferredStableClasses": 93,
"inferredStableClasses": 95,
"inferredUnstableClasses": 321,
"inferredUncertainClasses": 0,
"effectivelyStableClasses": 93,
"totalClasses": 414,
"effectivelyStableClasses": 95,
"totalClasses": 416,
"memoizedLambdas": 932,
"singletonLambdas": 0,
"singletonComposableLambdas": 136,

@ -65,8 +65,7 @@ stable class Filter {
stable val count: Int
stable val shareCount: Int
stable val selected: Boolean
runtime val filter: Filter
<runtime stability> = Stable
stable val filter: Filter
}
stable class Header {
stable val title: String
@ -74,7 +73,8 @@ stable class Header {
stable val hasError: Boolean
stable val canAdd: Boolean
stable val header: NavigationDrawerSubheader
<runtime stability> = Stable
}
stable class DrawerItem {
}
stable class ViewState {
stable val icons: ImmutableMap<String, ImmutableList<Icon>>
@ -131,16 +131,19 @@ stable class AlphanumComparator {
stable val getTitle: Function1<T, String?>
<runtime stability> = Stable
}
unstable class CaldavFilter {
stable class AstridOrderingFilter {
<runtime stability> = Stable
}
stable class CaldavFilter {
unstable val calendar: CaldavCalendar
unstable val account: CaldavAccount
stable val principals: Int
stable val count: Int
<runtime stability> = Unstable
<runtime stability> = Stable
}
unstable class CustomFilter {
stable class CustomFilter {
unstable val filter: Filter
<runtime stability> = Unstable
<runtime stability> = Stable
}
stable class DebugFilters {
<runtime stability> = Stable
@ -150,6 +153,8 @@ stable class EmptyFilter {
stable val title: String?
<runtime stability> = Stable
}
stable class Filter {
}
stable class FilterImpl {
stable val title: String?
stable val sql: String?
@ -168,10 +173,10 @@ unstable class FilterProvider {
unstable val tasksPreferences: TasksPreferences
<runtime stability> = Unstable
}
unstable class MyTasksFilter {
stable class MyTasksFilter {
stable val title: String
stable var filterOverride: String?
<runtime stability> = Unstable
<runtime stability> = Stable
}
stable class NavigationDrawerSubheader {
stable val title: String?
@ -187,10 +192,10 @@ stable class NotificationsFilter {
stable val title: String
<runtime stability> = Stable
}
unstable class PlaceFilter {
stable class PlaceFilter {
unstable val place: Place
stable val count: Int
<runtime stability> = Unstable
<runtime stability> = Stable
}
stable class RecentlyModifiedFilter {
stable val title: String
@ -211,20 +216,20 @@ stable class SubtaskFilter {
stable val sql: String
<runtime stability> = Stable
}
unstable class TagFilter {
stable class TagFilter {
unstable val tagData: TagData
stable val count: Int
stable var filterOverride: String?
<runtime stability> = Unstable
<runtime stability> = Stable
}
stable class TimerFilter {
stable val title: String
<runtime stability> = Stable
}
unstable class TodayFilter {
stable class TodayFilter {
stable val title: String
stable var filterOverride: String?
<runtime stability> = Unstable
<runtime stability> = Stable
}
unstable class TasksPreferences {
unstable val dataStore: DataStore<Preferences>
@ -241,7 +246,7 @@ unstable class TaskEditViewState {
stable val linkify: Boolean
stable val alwaysDisplayFullDate: Boolean
stable val showEditScreenWithoutUnlock: Boolean
unstable val list: CaldavFilter
stable val list: CaldavFilter
unstable val location: Location?
unstable val tags: ImmutableSet<TagData>
stable val calendar: String?
@ -274,6 +279,9 @@ unstable class Results {
unstable val tasks: SectionedDataSource
<runtime stability> = Unstable
}
stable class TasksResults {
<runtime stability> = Stable
}
stable class Header {
stable val value: Long
stable val collapsed: Boolean

@ -118,7 +118,7 @@ restartable skippable scheme("[androidx.compose.ui.UiComposable, [androidx.compo
unstable filters: List<FilterListItem>
stable query: String
stable onQueryChange: Function1<String, Unit>
selected: Filter?
stable selected: Filter?
stable onClick: Function1<FilterListItem, Unit>
stable getIcon: Function3<Filter, Composer, Int, String?>
stable getColor: Function1<Filter, Int>

@ -7,16 +7,16 @@
"totalGroups": 103,
"staticArguments": 146,
"certainArguments": 19,
"knownStableArguments": 706,
"knownStableArguments": 707,
"knownUnstableArguments": 2,
"unknownStableArguments": 3,
"unknownStableArguments": 2,
"totalArguments": 711,
"markedStableClasses": 3,
"inferredStableClasses": 24,
"inferredUnstableClasses": 22,
"markedStableClasses": 7,
"inferredStableClasses": 30,
"inferredUnstableClasses": 16,
"inferredUncertainClasses": 0,
"effectivelyStableClasses": 27,
"totalClasses": 49,
"effectivelyStableClasses": 37,
"totalClasses": 53,
"memoizedLambdas": 83,
"singletonLambdas": 0,
"singletonComposableLambdas": 12,

@ -4,7 +4,8 @@ import androidx.compose.runtime.Stable
import org.tasks.filters.NavigationDrawerSubheader
@Stable
sealed interface DrawerItem {
sealed class DrawerItem {
@Stable
data class Filter(
val title: String,
val icon: String?,
@ -13,21 +14,24 @@ sealed interface DrawerItem {
val shareCount: Int = 0,
val selected: Boolean = false,
val filter: org.tasks.filters.Filter,
) : DrawerItem {
) : DrawerItem() {
override fun key(): String {
return "filter_${hashCode()}"
}
}
@Stable
data class Header(
val title: String,
val collapsed: Boolean,
val hasError: Boolean,
val canAdd: Boolean,
val header: NavigationDrawerSubheader,
) : DrawerItem {
) : DrawerItem() {
override fun key(): String {
return "header_${header.subheaderType}_${header.id}"
}
}
fun key(): String
abstract fun key(): String
}

@ -1,8 +1,8 @@
package org.tasks.filters
@Deprecated("Use manual ordering")
interface AstridOrderingFilter : Filter {
var filterOverride: String?
abstract class AstridOrderingFilter : Filter() {
abstract var filterOverride: String?
fun getSqlQuery(): String = filterOverride ?: sql!!
}

@ -19,7 +19,7 @@ data class CaldavFilter(
val account: CaldavAccount,
val principals: Int = 0,
override val count: Int = NO_COUNT,
) : Filter {
) : Filter() {
override val title: String?
get() = calendar.name

@ -6,7 +6,7 @@ import org.tasks.themes.TasksIcons
@CommonParcelize
data class CustomFilter(
val filter: org.tasks.data.entity.Filter,
) : Filter {
) : Filter() {
override val title: String?
get() = filter.title
override val sql: String

@ -6,6 +6,6 @@ import org.tasks.CommonParcelize
class EmptyFilter(
override val sql: String? = "WHERE 0",
override val title: String? = null
) : Filter {
) : Filter() {
override fun areItemsTheSame(other: FilterListItem): Boolean = false
}

@ -1,33 +1,35 @@
package org.tasks.filters
import androidx.compose.runtime.Stable
import org.tasks.CommonParcelable
import org.tasks.data.NO_COUNT
import org.tasks.data.NO_ORDER
interface Filter : FilterListItem, CommonParcelable {
val valuesForNewTasks: String?
@Stable
abstract class Filter : FilterListItem, CommonParcelable {
open val valuesForNewTasks: String?
get() = null
val sql: String?
val icon: String?
abstract val sql: String?
open val icon: String?
get() = null
val title: String?
val tint: Int
abstract val title: String?
open val tint: Int
get() = 0
@Deprecated("Remove this")
val count: Int
open val count: Int
get() = NO_COUNT
val order: Int
open val order: Int
get() = NO_ORDER
override val itemType: FilterListItem.Type
get() = FilterListItem.Type.ITEM
val isReadOnly: Boolean
open val isReadOnly: Boolean
get() = false
val isWritable: Boolean
get() = !isReadOnly
fun supportsManualSort(): Boolean = false
fun supportsHiddenTasks(): Boolean = true
fun supportsSubtasks(): Boolean = true
fun supportsSorting(): Boolean = true
fun disableHeaders(): Boolean = !supportsSorting()
open fun supportsManualSort(): Boolean = false
open fun supportsHiddenTasks(): Boolean = true
open fun supportsSubtasks(): Boolean = true
open fun supportsSorting(): Boolean = true
open fun disableHeaders(): Boolean = !supportsSorting()
}

@ -9,7 +9,7 @@ data class FilterImpl(
override val valuesForNewTasks: String? = null,
override val icon: String? = null,
override val tint: Int = 0,
) : Filter {
) : Filter() {
override fun areItemsTheSame(other: FilterListItem): Boolean {
return other is Filter && sql == other.sql
}

@ -14,7 +14,7 @@ import tasks.kmp.generated.resources.filter_my_tasks
data class MyTasksFilter(
override val title: String,
override var filterOverride: String? = null,
) : AstridOrderingFilter {
) : AstridOrderingFilter() {
override val icon: String
get() = TasksIcons.ALL_INBOX
override val sql: String

@ -13,7 +13,7 @@ import tasks.kmp.generated.resources.filter_notifications
@CommonParcelize
data class NotificationsFilter(
override val title: String,
) : Filter {
) : Filter() {
override val icon: String
get() = TasksIcons.NOTIFICATIONS

@ -16,7 +16,7 @@ import org.tasks.themes.TasksIcons
data class PlaceFilter(
val place: Place,
override val count: Int = NO_COUNT,
) : Filter {
) : Filter() {
override val valuesForNewTasks: String
get() = mapToSerializedString(mapOf(Place.KEY to place.uid!!))
override val sql: String

@ -16,7 +16,7 @@ import tasks.kmp.generated.resources.filter_recently_modified
@CommonParcelize
data class RecentlyModifiedFilter(
override val title: String,
) : Filter {
) : Filter() {
override val icon: String
get() = TasksIcons.HISTORY

@ -17,7 +17,7 @@ import org.tasks.data.sql.QueryTemplate
data class SearchFilter(
override val title: String,
val query: String,
) : Filter {
) : Filter() {
override val sql: String
get() {
val matcher = "%$query%"

@ -16,7 +16,7 @@ import tasks.kmp.generated.resources.filter_snoozed
@CommonParcelize
data class SnoozedFilter(
override val title: String,
) : Filter {
) : Filter() {
override val icon: String
get() = TasksIcons.SNOOZE

@ -10,7 +10,7 @@ import org.tasks.data.sql.QueryTemplate
@CommonParcelize
data class SubtaskFilter(
private val parent: Long,
) : Filter {
) : Filter() {
@CommonIgnoredOnParcel
override val title: String = "subtasks"

@ -15,7 +15,7 @@ data class TagFilter(
val tagData: TagData,
override val count: Int = NO_COUNT,
override var filterOverride: String? = null,
) : AstridOrderingFilter {
) : AstridOrderingFilter() {
override val title: String?
get() = tagData.name
override val sql: String

@ -10,7 +10,7 @@ import tasks.kmp.generated.resources.Res
import tasks.kmp.generated.resources.filter_timer
@CommonParcelize
data class TimerFilter(override val title: String) : Filter {
data class TimerFilter(override val title: String) : Filter() {
override val icon
get() = TasksIcons.TIMER

@ -15,7 +15,7 @@ import tasks.kmp.generated.resources.filter_today
data class TodayFilter(
override val title: String,
override var filterOverride: String? = null,
) : AstridOrderingFilter {
) : AstridOrderingFilter() {
override val sql: String
get() = QueryTemplate()
.where(

@ -1,6 +1,6 @@
package org.tasks.tasklist
sealed interface TasksResults {
data object Loading : TasksResults
data class Results(val tasks: SectionedDataSource) : TasksResults
sealed class TasksResults {
data object Loading : TasksResults()
data class Results(val tasks: SectionedDataSource) : TasksResults()
}

Loading…
Cancel
Save