KamoCRM

Lift the free/busy engine out of the webinar feature

Refactorkamo-shared-library
Shipped
26 ஆகஸ்ட், 2026 அன்று 6:46 AM UTC
Author
Kamo
Commit
97ae24c

The interval arithmetic — expand, restrictionMask, candidateStarts, and the whole of AvailabilityInterval — was never webinar-specific. All the coupling sat in one method, blockersFor, which is now the BusySource interface. Moved verbatim: the +/-1 day expansion pad, the midnight-crossing rule, the clip-don't-drop trimming and the empty-mask-means-no-mask rule each encode a bug someone already found. The 30 tests moved with them, unchanged. MemberAvailabilityWindow implements AvailabilityWindowSpec without a body change; the entity stays in its package, since moving a mapped class buys boot risk and nothing else.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing