From 01a55625195103e900d74898680bba441d539bb8 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 5 Oct 2025 22:46:06 +0530 Subject: [PATCH 1/2] fix: prevent silent discard of event/task edits Refs: https://github.com/FossifyOrg/Calendar/issues/803 --- CHANGELOG.md | 2 ++ .../fossify/calendar/activities/EventActivity.kt | 16 ++++++++++++++-- .../fossify/calendar/activities/TaskActivity.kt | 16 ++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f15b90c45..ee357ba5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed old reminders not being removed when moving events ([#486]) - Fixed drag and drop copying events instead of moving them ([#706]) - Fixed crash when editing events with attendees ([#34]) +- Fixed event edits being silently discarded when using navigation arrow ([#803]) ## [1.6.1] - 2025-09-01 ### Changed @@ -146,6 +147,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#729]: https://github.com/FossifyOrg/Calendar/issues/729 [#732]: https://github.com/FossifyOrg/Calendar/issues/732 [#761]: http://github.com/FossifyOrg/Calendar/issues/761 +[#803]: https://github.com/FossifyOrg/Calendar/issues/803 [Unreleased]: https://github.com/FossifyOrg/Calendar/compare/1.6.1...HEAD [1.6.1]: https://github.com/FossifyOrg/Calendar/compare/1.6.0...1.6.1 diff --git a/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt b/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt index a27fefe31..f34bf95d5 100644 --- a/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt @@ -255,9 +255,21 @@ class EventActivity : SimpleActivity() { override fun onResume() { super.onResume() setupToolbar(binding.eventToolbar, NavigationIcon.Arrow) + binding.eventToolbar.setNavigationOnClickListener { + maybeShowUnsavedChangesDialog { + hideKeyboard() + finish() + } + } } override fun onBackPressed() { + maybeShowUnsavedChangesDialog { + super.onBackPressed() + } + } + + private fun maybeShowUnsavedChangesDialog(discard: () -> Unit) { val now = System.currentTimeMillis() if (now - mLastSavePromptTS > SAVE_DISCARD_PROMPT_INTERVAL && isEventChanged()) { mLastSavePromptTS = now @@ -271,11 +283,11 @@ class EventActivity : SimpleActivity() { if (it) { saveCurrentEvent() } else { - super.onBackPressed() + discard() } } } else { - super.onBackPressed() + discard() } } diff --git a/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt b/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt index b8c077899..b533bf238 100644 --- a/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt +++ b/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt @@ -87,6 +87,12 @@ class TaskActivity : SimpleActivity() { override fun onResume() { super.onResume() setupToolbar(binding.taskToolbar, NavigationIcon.Arrow) + binding.taskToolbar.setNavigationOnClickListener { + maybeShowUnsavedChangesDialog { + hideKeyboard() + finish() + } + } } private fun refreshMenuItems() { @@ -137,6 +143,12 @@ class TaskActivity : SimpleActivity() { } override fun onBackPressed() { + maybeShowUnsavedChangesDialog { + super.onBackPressed() + } + } + + private fun maybeShowUnsavedChangesDialog(discard: () -> Unit) { if (System.currentTimeMillis() - mLastSavePromptTS > SAVE_DISCARD_PROMPT_INTERVAL && isTaskChanged()) { mLastSavePromptTS = System.currentTimeMillis() ConfirmationAdvancedDialog( @@ -149,11 +161,11 @@ class TaskActivity : SimpleActivity() { if (it) { saveCurrentTask() } else { - super.onBackPressed() + discard() } } } else { - super.onBackPressed() + discard() } } From 886652e1b2bb71f729c1d3cd95ba698c757ce23b Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 5 Oct 2025 22:52:37 +0530 Subject: [PATCH 2/2] refactor: extract toolbar setup to `setupToolbar()` method --- .../kotlin/org/fossify/calendar/activities/EventActivity.kt | 4 ++++ .../kotlin/org/fossify/calendar/activities/TaskActivity.kt | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt b/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt index f34bf95d5..cfa78ae8a 100644 --- a/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/org/fossify/calendar/activities/EventActivity.kt @@ -254,6 +254,10 @@ class EventActivity : SimpleActivity() { override fun onResume() { super.onResume() + setupToolbar() + } + + private fun setupToolbar() { setupToolbar(binding.eventToolbar, NavigationIcon.Arrow) binding.eventToolbar.setNavigationOnClickListener { maybeShowUnsavedChangesDialog { diff --git a/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt b/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt index b533bf238..bc50de0fa 100644 --- a/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt +++ b/app/src/main/kotlin/org/fossify/calendar/activities/TaskActivity.kt @@ -86,6 +86,10 @@ class TaskActivity : SimpleActivity() { override fun onResume() { super.onResume() + setupToolbar() + } + + private fun setupToolbar() { setupToolbar(binding.taskToolbar, NavigationIcon.Arrow) binding.taskToolbar.setNavigationOnClickListener { maybeShowUnsavedChangesDialog {