wger-project / flutter

Flutter fitness/workout app for wger
GNU Affero General Public License v3.0
572 stars 245 forks source link

bug with datepicker for weight measurements #641

Open Dieterbe opened 2 months ago

Dieterbe commented 2 months ago

i have logged a weight entry today at 20:57:13 when i go to the "new entry" dialog, and tap on the calendar - so i can choose a new day (e.g. to log yesterday's weight) - it triggers this exception:

E/flutter (19174): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: 'package:flutter/src/material/date_picker.dart': Failed assertion: line 205 pos 5: 'selectableDayPredicate == null || initialDate == null || selectableDayPredicate(initialDate)': Provided initialDate 2024-09-18 00:00:00.000 must satisfy provided selectableDayPredicate.

why? because it uses selectableDayPredicate to only allow certain dates. while it does this:

                  // Always allow the current initial date
                  if (day == _weightEntry.date) {
                    return true;
                  }

this doesn't actually work because day is 2024-09-18 00:00:00.000 and _weightEntry.date is 2024-09-18 20:57:13.511178

since https://github.com/wger-project/flutter/pull/633, we started logging values with non-0 hours/minutes/seconds

this brings up the question: should we allow logging multiple values within the same day (e.g. keep the hour-minute-second precision)? while probably not typically useful, i don't see much harm in it either. or are there other places (e.g. calendar, backend/python) where we make assumptions of "max once per day" ?

Dieterbe commented 2 weeks ago

@rolandgeider can you let me know what you think of the question above?

rolandgeider commented 2 weeks ago

no, there isn't really a deeper meaning for this besides that it doesn't make too much sense to log the weight several times per day. We could just allow it and remove all of these checks (we would need some small changes on the backend though)

Dieterbe commented 2 weeks ago

i've been curious how my weight fluctuates during the day, but i agree it's not super relevant as a "feature". but perhaps for other types of measurements it makes sense to measure more frequently (e.g. blood glucose levels), and we do want to make weight & measurements functions as similar as possible, and potentially even merge them later.

if it does not complicate the code (in fact, it may simplify it) to allow higher resolution & multi-per-day measurements, we should just allow them IMHO