From b043c90770fdbefb7a919150d71cc6245095de3d Mon Sep 17 00:00:00 2001 From: Dharanish Date: Fri, 5 Jul 2024 16:02:36 +0200 Subject: [PATCH] Implement edits sub habits --- .../habits/edit/EditHabitActivity.kt | 35 +++++++++++-------- .../isoron/uhabits/intents/IntentFactory.kt | 3 +- .../uhabits/core/commands/EditHabitCommand.kt | 4 +-- .../isoron/uhabits/core/io/LoopDBImporter.kt | 2 +- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt index d5cc898b1..8c70d3cb5 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt @@ -75,7 +75,7 @@ class EditHabitActivity : AppCompatActivity() { private lateinit var binding: ActivityEditHabitBinding private lateinit var commandRunner: CommandRunner - var habitId = -1L + var habitUUID: String? = null lateinit var habitType: HabitType var parentGroup: HabitGroup? = null var unit = "" @@ -98,10 +98,20 @@ class EditHabitActivity : AppCompatActivity() { binding = ActivityEditHabitBinding.inflate(layoutInflater) setContentView(binding.root) - if (intent.hasExtra("habitId")) { + if (intent.hasExtra("parentGroupUUID")) { + val parentGroupUUID = intent.getStringExtra("parentGroupUUID") + parentGroup = component.habitGroupList.getByUUID(parentGroupUUID) + } + + if (intent.hasExtra("habitUUID")) { binding.toolbar.title = getString(R.string.edit_habit) - habitId = intent.getLongExtra("habitId", -1) - val habit = component.habitList.getById(habitId)!! + habitUUID = intent.getStringExtra("habitUUID")!! + val habitList = if (parentGroup != null) { + parentGroup!!.habitList + } else { + component.habitList + } + val habit = habitList.getByUUID(habitUUID)!! habitType = habit.type color = habit.color freqNum = habit.frequency.numerator @@ -112,7 +122,6 @@ class EditHabitActivity : AppCompatActivity() { reminderMin = it.minute reminderDays = it.days } - parentGroup = habit.parent binding.nameInput.setText(habit.name) binding.questionInput.setText(habit.question) binding.notesInput.setText(habit.description) @@ -120,14 +129,10 @@ class EditHabitActivity : AppCompatActivity() { binding.targetInput.setText(habit.targetValue.toString()) } else { habitType = HabitType.fromInt(intent.getIntExtra("habitType", HabitType.YES_NO.value)) - if (intent.hasExtra("parentGroupUUID")) { - val parentGroupUUID = intent.getStringExtra("parentGroupUUID")!! - parentGroup = component.habitGroupList.getByUUID(parentGroupUUID) - } } if (state != null) { - habitId = state.getLong("habitId") + habitUUID = state.getString("habitUUID") habitType = HabitType.fromInt(state.getInt("habitType")) color = PaletteColor(state.getInt("paletteColor")) freqNum = state.getInt("freqNum") @@ -274,8 +279,8 @@ class EditHabitActivity : AppCompatActivity() { } var original: Habit? = null - if (habitId >= 0) { - original = habitList.getById(habitId)!! + if (habitUUID != null) { + original = habitList.getByUUID(habitUUID)!! habit.copyFrom(original) } @@ -300,10 +305,10 @@ class EditHabitActivity : AppCompatActivity() { habit.parentID = parentGroup?.id habit.parentUUID = parentGroup?.uuid - val command = if (habitId >= 0) { + val command = if (habitUUID != null) { EditHabitCommand( habitList, - habitId, + habitUUID!!, habit ) } else { @@ -382,7 +387,7 @@ class EditHabitActivity : AppCompatActivity() { override fun onSaveInstanceState(state: Bundle) { super.onSaveInstanceState(state) with(state) { - putLong("habitId", habitId) + putString("habitUUID", habitUUID) putInt("habitType", habitType.value) putInt("paletteColor", color.paletteIndex) putInt("androidColor", androidColor) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.kt b/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.kt index 6aed4f7c1..f446cb041 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/intents/IntentFactory.kt @@ -100,8 +100,9 @@ class IntentFactory fun startEditActivity(context: Context, habit: Habit): Intent { val intent = startEditActivity(context) - intent.putExtra("habitId", habit.id) + intent.putExtra("habitUUID", habit.uuid) intent.putExtra("habitType", habit.type) + intent.putExtra("parentGroupUUID", habit.parentUUID) return intent } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/EditHabitCommand.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/EditHabitCommand.kt index 8e168293d..733273961 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/EditHabitCommand.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/commands/EditHabitCommand.kt @@ -24,11 +24,11 @@ import org.isoron.uhabits.core.models.HabitNotFoundException data class EditHabitCommand( val habitList: HabitList, - val habitId: Long, + val habitUUID: String, val modified: Habit ) : Command { override fun run() { - val habit = habitList.getById(habitId) ?: throw HabitNotFoundException() + val habit = habitList.getByUUID(habitUUID) ?: throw HabitNotFoundException() habit.copyFrom(modified) habitList.update(habit) habit.observable.notifyListeners() diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/io/LoopDBImporter.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/io/LoopDBImporter.kt index 0c93c74ad..d5bd237a1 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/io/LoopDBImporter.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/io/LoopDBImporter.kt @@ -89,7 +89,7 @@ class LoopDBImporter val modified = modelFactory.buildHabit() habitRecord.id = habit.id habitRecord.copyTo(modified) - EditHabitCommand(habitList, habit.id!!, modified).run() + EditHabitCommand(habitList, habit.uuid!!, modified).run() } // Reload saved version of the habit