You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: adds click and swipe interactions to session replay (#292)
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Adds touch interaction (down/move/up) capture and RRWeb event
generation, refactors capture/export pipeline to batch per session and
handle full vs incremental snapshots.
>
> - **Replay capture**:
> - Introduce `InteractionEvent`, `Position`, and `InteractionSource` to
intercept window touch events and emit interaction logs
(ACTION_DOWN/UP/MOVE) with buffering.
> - Add `InteractionMoveGrouper` to filter/group MOVE positions by
distance/time and periodically emit grouped events.
> - Rename `Capture` to `CaptureEvent`; `CaptureSource` now tracks the
most recent activity safely and uses `DispatcherProviderHolder`.
> - **Exporter (`RRwebGraphQLReplayLogExporter`)**:
> - Process logs sorted by time, group events by `session.id`, and
initialize sessions once before pushing payloads.
> - Replace send methods with generators: `generateCaptureFullEvents`,
`generateCaptureIncrementalEvents`, and new `generateInteractionEvents`
(RRWeb-compatible).
> - Track last-seen state (session/size) to choose full vs incremental
snapshots.
> - **Instrumentation (`ReplayInstrumentation`)**:
> - Wire `InteractionSource` into logging; emit
`event.domain=interaction` with serialized coords; use dispatcher
provider for coroutines.
> - **Tests**:
> - Add comprehensive `InteractionMoveGrouperTest` and update
`RRwebGraphQLReplayLogExporterTest` for event generation and batching
behavior.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6abf164. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Copy file name to clipboardExpand all lines: sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/CaptureEvent.kt
Copy file name to clipboardExpand all lines: sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/replay/CaptureSource.kt
0 commit comments