Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

REM-875 - Add default Presets to mimic old builder tabs #243

Merged
merged 1 commit into from
Dec 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions app/src/main/java/com/elementary/tasks/config/DayOfMonth.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.elementary.tasks.config

object DayOfMonth {
const val LastDayOfMonth = 0
}
6 changes: 4 additions & 2 deletions app/src/main/java/com/elementary/tasks/core/data/AppDb.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.elementary.tasks.core.data.migrations.MIGRATION_10_11
import com.elementary.tasks.core.data.migrations.MIGRATION_11_12
import com.elementary.tasks.core.data.migrations.MIGRATION_12_13
import com.elementary.tasks.core.data.migrations.MIGRATION_13_14
import com.elementary.tasks.core.data.migrations.MIGRATION_14_15
import com.elementary.tasks.core.data.migrations.MIGRATION_1_2
import com.elementary.tasks.core.data.migrations.MIGRATION_2_3
import com.elementary.tasks.core.data.migrations.MIGRATION_3_4
Expand Down Expand Up @@ -56,7 +57,7 @@ import com.elementary.tasks.core.data.models.UsedTime
RecurPreset::class,
RecentQuery::class
],
version = 14,
version = 15,
exportSchema = false
)
abstract class AppDb : RoomDatabase() {
Expand Down Expand Up @@ -94,7 +95,8 @@ abstract class AppDb : RoomDatabase() {
MIGRATION_10_11,
MIGRATION_11_12,
MIGRATION_12_13,
MIGRATION_13_14
MIGRATION_13_14,
MIGRATION_14_15
)
.allowMainThreadQueries()
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ class UiPresetListAdapter(
return UiPresetList(
id = data.id,
name = data.name,
description = getDescription(data.recurObject)
description = getDescription(data)
)
}

private fun getDescription(recurObject: String): String {
val rrule = runCatching { recurrenceManager.parseObject(recurObject) }
private fun getDescription(data: RecurPreset): String {
val rrule = runCatching { recurrenceManager.parseObject(data.recurObject) }
.getOrNull()
?.map?.values?.firstOrNull { it.tagType == TagType.RRULE }
?.buildString()
return rrule ?: ""
return rrule ?: data.description ?: ""
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.elementary.tasks.core.data.migrations

import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase

val MIGRATION_14_15: Migration = object : Migration(14, 15) {
override fun migrate(db: SupportSQLiteDatabase) {
runCatching {
db.execSQL("ALTER TABLE RecurPreset ADD COLUMN description TEXT")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ data class RecurPreset(
@SerializedName("builderScheme")
val builderScheme: List<PresetBuilderScheme> = emptyList(),
@SerializedName("useCount")
val useCount: Int
val useCount: Int,
@SerializedName("description")
val description: String?
) : Parcelable

enum class PresetType {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/elementary/tasks/core/utils/DI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ fun dbModule(context: Context): Module {

val utilModule = module {
single { Prefs(get()) }
factory { PresetInitProcessor(get(), get(), get(), get(), get()) }
factory { PresetInitProcessor(get(), get(), get(), get(), get(), get()) }
single { ReminderExplanationVisibility(get()) }
single { GTasks(get(), get(), get(), get(), get(), get(), get()) }
single { ThemeProvider(get(), get()) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,29 @@ import com.elementary.tasks.core.data.models.RecurPreset
import com.elementary.tasks.core.data.repository.RecurPresetRepository
import com.elementary.tasks.core.os.PackageManagerWrapper
import com.elementary.tasks.core.utils.params.Prefs
import com.elementary.tasks.reminder.build.preset.BuilderPresetInitializer
import com.elementary.tasks.reminder.build.preset.BuilderPresetsGenerateUseCase
import com.elementary.tasks.reminder.build.preset.DefaultPresetsGenerateUseCase
import org.threeten.bp.LocalDateTime

class PresetInitProcessor(
private val recurPresetRepository: RecurPresetRepository,
private val prefs: Prefs,
private val textProvider: TextProvider,
private val packageManagerWrapper: PackageManagerWrapper,
private val builderPresetInitializer: BuilderPresetInitializer
private val builderPresetsGenerateUseCase: BuilderPresetsGenerateUseCase,
private val builderDefaultPresetsGenerateUseCase: DefaultPresetsGenerateUseCase
) {

fun run() {
if (prefs.initPresets) {
prefs.initPresets = false
setBuilderSettings()
createRecurPresets().forEach { savePreset(it) }
builderPresetInitializer().forEach { savePreset(it) }
builderPresetsGenerateUseCase().forEach { savePreset(it) }
}
if (prefs.initDefaultPresets) {
prefs.initDefaultPresets = false
builderDefaultPresetsGenerateUseCase().forEach { savePreset(it) }
}
}

Expand Down Expand Up @@ -191,7 +197,8 @@ class PresetInitProcessor(
recurObject = rule,
type = PresetType.RECUR,
createdAt = LocalDateTime.now(),
useCount = 0
useCount = 0,
description = null
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@ class Prefs(
get() = getBoolean(PrefsConstants.IS_PRESET_INIT, def = true)
set(value) = putBoolean(PrefsConstants.IS_PRESET_INIT, value)

var initDefaultPresets: Boolean
get() = getBoolean(PrefsConstants.IS_DEFAULT_PRESET_INIT, def = true)
set(value) = putBoolean(PrefsConstants.IS_DEFAULT_PRESET_INIT, value)

var showAdvancedDayDialog: Boolean
get() = getBoolean(PrefsConstants.RECUR_SHOW_ADVANCED_DAY_DIALOG, def = false)
set(value) = putBoolean(PrefsConstants.RECUR_SHOW_ADVANCED_DAY_DIALOG, value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ object PrefsConstants {
const val BIRTHDAY_REMINDER_TIME = "reminder_hour"

const val IS_PRESET_INIT = "preset_init"
const val IS_DEFAULT_PRESET_INIT = "preset_init_default"

const val PRIVACY_POLICY_URL = "privacy_url"
const val TERMS_URL = "terms_url"
Expand Down
7 changes: 5 additions & 2 deletions app/src/main/java/com/elementary/tasks/reminder/KoinModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ import com.elementary.tasks.reminder.build.logic.builderstate.BuilderStateCalcul
import com.elementary.tasks.reminder.build.logic.builderstate.ReminderPredictionCalculator
import com.elementary.tasks.reminder.build.preset.BiValueToBuilderSchemeValue
import com.elementary.tasks.reminder.build.preset.BuilderItemsToBuilderPresetAdapter
import com.elementary.tasks.reminder.build.preset.BuilderPresetInitializer
import com.elementary.tasks.reminder.build.preset.BuilderPresetsGenerateUseCase
import com.elementary.tasks.reminder.build.preset.BuilderPresetToBiAdapter
import com.elementary.tasks.reminder.build.preset.DefaultPresetsGenerateUseCase
import com.elementary.tasks.reminder.build.preset.ManagePresetsViewModel
import com.elementary.tasks.reminder.build.preset.RecurParamsToBiAdapter
import com.elementary.tasks.reminder.build.preset.primitive.PrimitiveProtocol
Expand Down Expand Up @@ -276,7 +277,9 @@ val reminderModule = module {

factory { ReminderPredictionCalculator(get(), get()) }

factory { BuilderPresetInitializer(get(), get(), get(), get()) }
factory { BuilderPresetsGenerateUseCase(get(), get(), get(), get()) }

factory { DefaultPresetsGenerateUseCase(get(), get(), get(), get()) }

single { ReminderBuilderLauncher(get()) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -662,7 +662,8 @@ class BuildReminderViewModel(
type = PresetType.BUILDER,
createdAt = dateTimeManager.getCurrentDateTime(),
useCount = 1,
builderScheme = builderItemsToBuilderPresetAdapter(items)
builderScheme = builderItemsToBuilderPresetAdapter(items),
description = null
)
recurPresetRepository.save(preset)
analyticsEventSender.send(PresetUsed(PresetAction.CREATE))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ package com.elementary.tasks.reminder.build.formatter.datetime

import android.content.Context
import com.elementary.tasks.R
import com.elementary.tasks.config.DayOfMonth
import com.elementary.tasks.reminder.build.formatter.Formatter

@Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
class DayOfMonthFormatter(
private val context: Context
) : Formatter<Int>() {
override fun format(dayOfMonth: Int): String {
return if (dayOfMonth == 0) {
return if (dayOfMonth == DayOfMonth.LastDayOfMonth) {
context.getString(R.string.builder_last_day_of_month)
} else {
"$dayOfMonth"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import org.threeten.bp.LocalDate
import org.threeten.bp.LocalDateTime
import org.threeten.bp.LocalTime

class BuilderPresetInitializer(
class BuilderPresetsGenerateUseCase(
private val contextProvider: ContextProvider,
private val builderItemsToBuilderPresetAdapter: BuilderItemsToBuilderPresetAdapter,
private val biFactory: BiFactory,
Expand Down Expand Up @@ -163,7 +163,8 @@ class BuilderPresetInitializer(
type = PresetType.BUILDER,
createdAt = LocalDateTime.now(),
useCount = 0,
builderScheme = scheme
builderScheme = scheme,
description = null
)
}

Expand Down
Loading
Loading