Skip to content

Commit

Permalink
Merge pull request #243 from naz013/feature/REM-875_Add_default_presets
Browse files Browse the repository at this point in the history
REM-875 - Add default Presets to mimic old builder tabs
  • Loading branch information
naz013 authored Dec 15, 2024
2 parents e5ca4d4 + 43adf48 commit 762bafa
Show file tree
Hide file tree
Showing 15 changed files with 326 additions and 19 deletions.
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

0 comments on commit 762bafa

Please sign in to comment.