Fix workouts list refresh when workout is modified

This commit is contained in:
José Rebelo
2025-08-26 22:15:18 +01:00
parent eadae915c9
commit 1224a4c483
3 changed files with 19 additions and 4 deletions
@@ -117,6 +117,7 @@ class WorkoutDetailsActivity : AbstractGBActivity() {
companion object {
const val EXTRA_WORKOUT_ID = "workout_id"
const val RESULT_WORKOUT_CHANGED = 2
fun createSingleWorkoutIntent(
context: Context,
@@ -566,6 +566,7 @@ class WorkoutDetailsFragment : Fragment(), MenuProvider {
currentWorkout?.let {
workoutEditor.editWorkoutName(it, object : WorkoutEditor.Callback {
override fun onWorkoutUpdated() {
notifyWorkoutChanged()
updateWorkoutHeader(workout.summary)
}
})
@@ -577,6 +578,7 @@ class WorkoutDetailsFragment : Fragment(), MenuProvider {
currentWorkout?.let {
workoutEditor.editGpsTrack(it, object : WorkoutEditor.Callback {
override fun onWorkoutUpdated() {
notifyWorkoutChanged()
// Reload the entire workout data so that we can refresh the charts
loadWorkoutData()
}
@@ -594,6 +596,13 @@ class WorkoutDetailsFragment : Fragment(), MenuProvider {
}
}
private fun notifyWorkoutChanged() {
val resultIntent = Intent().apply {
putExtra(ARG_WORKOUT_ID, workoutId)
}
requireActivity().setResult(WorkoutDetailsActivity.RESULT_WORKOUT_CHANGED, resultIntent)
}
private fun updateMenuItems(menu: Menu) {
val workout = currentWorkout ?: return
@@ -101,9 +101,9 @@ class WorkoutListActivity : AbstractListActivity<BaseActivitySummary>() {
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
super.onActivityResult(requestCode, resultCode, resultData)
resultData?.extras?.let { bundle ->
when (requestCode) {
ACTIVITY_FILTER -> {
when (requestCode) {
ACTIVITY_FILTER -> {
resultData?.extras?.let { bundle ->
activityFilter = bundle.getInt("activityFilter", 0)
dateFromFilter = bundle.getLong("dateFromFilter", 0)
dateToFilter = bundle.getLong("dateToFilter", 0)
@@ -113,7 +113,12 @@ class WorkoutListActivity : AbstractListActivity<BaseActivitySummary>() {
itemsFilter = bundle.getSerializable("itemsFilter") as? List<Long>
refresh()
}
ACTIVITY_DETAIL -> refresh()
}
ACTIVITY_DETAIL -> {
if (resultCode == WorkoutDetailsActivity.RESULT_WORKOUT_CHANGED) {
// FIXME we could try to only update the workouts that changed
refresh()
}
}
}
}