fix: recurrance recalulation with excemption - #923
Merged
SebastianKrupinski merged 1 commit intoSep 2, 2026
Conversation
SebastianKrupinski
requested review from
odzhychko
and removed request for
GVodyanov
September 1, 2026 16:38
SebastianKrupinski
force-pushed
the
fix/recurrance-recalulation-with-excemption
branch
from
September 1, 2026 17:05
d62d99b to
fd68fb2
Compare
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
SebastianKrupinski
force-pushed
the
fix/recurrance-recalulation-with-excemption
branch
from
September 1, 2026 17:37
fd68fb2 to
a796080
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
odzhychko
approved these changes
Sep 2, 2026
odzhychko
left a comment
There was a problem hiding this comment.
LGTM. Can be merged a merged after resolving the one suggestion.
|
Uff, never have thought of that just changing the start date might needs recalculating |
odzhychko
reviewed
Sep 2, 2026
odzhychko
reviewed
Sep 2, 2026
SebastianKrupinski
deleted the
fix/recurrance-recalulation-with-excemption
branch
September 2, 2026 13:18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bug
When a recurring event's master startDate is shifted (e.g. dragging/editing the whole series), the method looped over _recurrenceExceptionItems, items are keyed by each exception's recurrence-id, to shift every exception's recurrence-id by the same delta. The loop did this by deleting each entry and re-inserting it under its new (shifted) key, while iterating that same live Map. The JS Map iterator revisits entries inserted during iteration, so the just-shifted entry got visited again, shifted again, and re-inserted again — forever.
Fix
Don't use the live map.
Bonus find:
fixing this exposed that an existing test's hardcoded "expected" output had baked in the old bug's behavior
Bonus
Added 9 scenario tests for updateStartDateOfMasterItem covering:
🤖 AI (if applicable)