Skip to content

Allow editing session start time in session complete sheet - #24

Open
JWAY21 wants to merge 3 commits into
jackjackbits:mainfrom
JWAY21:feature/editable-start-time
Open

Allow editing session start time in session complete sheet#24
JWAY21 wants to merge 3 commits into
jackjackbits:mainfrom
JWAY21:feature/editable-start-time

Conversation

@JWAY21

@JWAY21 JWAY21 commented Jun 7, 2026

Copy link
Copy Markdown

What this changes

The "Session Complete" sheet currently shows start time as a non-editable label. This PR replaces it with a wheel `DatePicker` that mirrors the existing end time picker, so users can correct the start time if they forgot to start the timer right away.

When either time is adjusted, the VITAMIN D SYNTHESIZED amount recalculates automatically ~0.5 s after the wheel settles — so the figure always reflects the corrected duration, not the raw tracked time.

How it works

  • `selectedStartTime` state is added, initialised from `sessionStartTime`
  • The static start time label is replaced with a `DatePicker(in: ...selectedEndTime)` — capped at the current end time so start can never exceed end
  • The end time picker's lower bound updates to `selectedStartTime`, keeping the two pickers mutually consistent
  • When either picker changes, a debounced `Task` fires after 0.5 s and recalculates: `currentAmount = sessionAmount × (newDuration / originalDuration)` — preserving the UV/skin/clothing weighting from the live session
  • On save, both `currentAmount` (recalculated IU) and `selectedStartTime` are written to the `VitaminDSession` SwiftData record and the HealthKit entry

Testing

  1. Start a sun exposure session, let it run for at least a minute
  2. Stop it — the Session Complete sheet appears with the original amount
  3. Scroll the START TIME wheel earlier — SESSION DURATION should update in real time; VITAMIN D SYNTHESIZED should update ~0.5 s after the wheel stops
  4. Scroll END TIME later — same recalculation should fire
  5. Try scrolling start time past the end time — the picker should not allow it
  6. Tap "Save to Health" — the saved HealthKit entry should reflect the adjusted start time and recalculated amount (not the original tracked amount)

Jesse Wales and others added 2 commits June 7, 2026 09:54
Replaces the non-editable start time display with a wheel DatePicker,
mirroring the existing end time editing behaviour. The start time picker
is capped to ≤ selectedEndTime, and the end time picker lower bound
updates to selectedStartTime, keeping the range mutually consistent.
The adjusted start time is written through to the saved VitaminDSession
and HealthKit entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the user edits the start or end time on the Session Complete sheet,
the vitamin D synthesized amount now updates automatically 0.5 s after
the wheel stops spinning. The new amount scales proportionally to the
adjusted duration (newDuration / originalDuration × sessionAmount),
preserving the UV/skin/clothing weighting from the live session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JWAY21 added a commit to JWAY21/sunday that referenced this pull request Jun 8, 2026
… mcg to PR jackjackbits#24

PR jackjackbits#24 includes a comprehensive rewrite of SessionCompletionSheet that
already handles IU/mcg display using currentAmount. Keeping the same
changes in PR jackjackbits#25 would cause a duplicate @AppStorage declaration
(compile error) when both PRs are merged.

PR jackjackbits#25 now only touches ContentView: the UNITS toggle card, convertUnit()
helper, and updated rate/session/today displays.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without this the HealthKit sample was always stamped with the moment
the user tapped "Save to Health" (Date() default), not with the
corrected session start time. The adjusted start time was only written
to the SwiftData record, not to HealthKit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JWAY21 added a commit to JWAY21/sunday that referenced this pull request Jun 8, 2026
…prehensive version

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant