Commit Graph
4 Commits
Author SHA1 Message Date
google-labs-jules[bot]andPR0M3TH3AN 6e42d2c97c perf: Optimize nostrService video subscription updates
Optimizes the `subscribeVideos` callback in `js/services/nostrService.js` to handle video updates incrementally, avoiding O(N*M) complexity during high-volume updates (e.g., initial load).

Changes:
- Modified `js/nostr/videoEventBuffer.js` to include deleted videos in the flushed batch, allowing consumers to handle deletions incrementally.
- Updated `js/services/nostrService.js` to process `updatedVideos` incrementally:
  - Separates updates into active and deleted.
  - Updates `this.videosMap` directly (removing deleted, adding/updating active).
  - Filters and caches only the active updates (O(M)).
  - Emits `videos:updated` with the full sorted list (derived from the updated map) to maintain API contract with consumers.
  - Persists the full sorted list to localStorage.

This reduces the per-batch overhead significantly by avoiding O(N) filtering and map reconstruction for every batch of updates.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:48:37 +00:00
google-labs-jules[bot]andPR0M3TH3AN bb39226ca5 perf-agent: visibility gate VideoEventBuffer
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-13 20:44:59 +00:00
google-labs-jules[bot]andPR0M3TH3AN a997120f42 chore(ai): doc js/nostr/client.js and videoEventBuffer.js
- Add JSDoc to exported methods in `js/nostr/client.js`
- Add JSDoc to `js/nostr/videoEventBuffer.js`
- Add in-code comments for complex algorithms (history hydration, soft/hard delete, buffering)
- Update `docs/nostr-client-overview.md` with invariants and pitfalls
- No functional changes

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-12 15:28:54 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0b35e2639b Refactor subscribeVideos buffering logic to VideoEventBuffer class
Separated the complex event buffering and flushing logic from `NostrClient.subscribeVideos` into a dedicated `VideoEventBuffer` utility class. This improves readability and maintainability of the `client.js` file.

- Created `js/nostr/videoEventBuffer.js`
- Updated `js/nostr/client.js` to use `VideoEventBuffer`
- Added unit tests in `tests/nostr/videoEventBuffer.test.mjs`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-10 14:37:02 +00:00